[design] 6 Automorphism groups and isomorphism testing for block designs

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

# 6 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 in order for these functions to work.

## 6.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

  ## 6.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]