[Up] [Previous] [Next] [Index]

# 5 Automorphism groups and isomorphism testing for block designs

### Sections

1. Computing automorphism groups
2. Testing isomorphism

The functions in this chapter depend on nauty via the GRAPE package, which must be fully installed on a computer running UNIX in order for these functions to work.

## 5.1 Computing automorphism groups

- `AutGroupBlockDesign(` D`)`

  This function returns the automorphism group of the block design D. The automorphism group Aut(D) of D is the group consisting of all the permutations of the points {1,...,``D`.v`} which preserve the block-multiset of D.

  This function is not yet implemented for non-binary block designs.

  This function can also be called via `AutomorphismGroup(`D`)`.

      gap> D:=PGPointFlatBlockDesign(2,3,1);; # projective plane of order 3
      gap> Size(AutGroupBlockDesign(D));
      5616

  ## 5.2 Testing isomorphism

- `IsIsomorphicBlockDesign(` D1`,` D2`)`

  This boolean function returns `true` if and only if block designs D1 and D2 are isomorphic, that is, there is a bijection from the point-set of D1 to that of D2 which maps the block-multiset of D1 to that of D2.

  This function is not yet implemented for non-binary block designs.

  For pairwise isomorphism testing for three or more binary block designs, see BlockDesignIsomorphismClassRepresentatives.

      gap> D1:=BlockDesign(3,[[1],[1,2,3],[2]]);;
      gap> D2:=BlockDesign(3,[[1],[1,2,3],[3]]);;
      gap> IsIsomorphicBlockDesign(D1,D2);
      true
      gap> D3:=BlockDesign(4,[[1],[1,2,3],[3]]);;
      gap> IsIsomorphicBlockDesign(D2,D3);
      false
      gap> # block designs with different numbers of points are not isomorphic

- `BlockDesignIsomorphismClassRepresentatives(` L`)`

  Given a list L of binary block designs, this function returns a list consisting of pairwise non-isomorphic elements of L, representing all the isomorphism classes of elements of L. The order of the elements in the returned list may differ from their order in L.

      gap> D1:=BlockDesign(3,[[1],[1,2,3],[2]]);;
      gap> D2:=BlockDesign(3,[[1],[1,2,3],[3]]);;
      gap> D3:=BlockDesign(4,[[1],[1,2,3],[3]]);;
      gap> BlockDesignIsomorphismClassRepresentatives([D1,D2,D3]);
      [ rec( isBlockDesign := true, v := 4, blocks := [ [ 1 ], [ 1, 2, 3 ], [ 3 ] ],
            isBinary := true ),
        rec( isBlockDesign := true, v := 3, blocks := [ [ 1 ], [ 1, 2, 3 ], [ 2 ] ],
            isBinary := true ) ]

  [Up] [Previous] [Next] [Index]