[Up] [Next] [Index]

# 7.1 Isomorphisms and Collineations

Isomorphisms of projective planes are mappings which take points to points and blocks to blocks and respect incidence. A collineation of a projective plane P is a collineation from P to P (an automorphism).

As projective planes are assumed to live on the integers, isomorphisms of projective planes are represented by permutations. To test if a permutation on points is actually an isomorphism of projective planes, the following methods can be used.

- `IsIsomorphismOfProjectivePlanes(` perm`,` blocks1`,` blocks2`) O`

  Let blocks1, blocks2 be two sets of blocks of projective planes on the same points. `IsIsomorphismOfProjectivePlanes(` perm`,`blocks1`,`blocks2`)` test if the permutation perm on points defines an isomorphism of the projective planes defined by blocks1 and blocks2.

- `IsCollineationOfProjectivePlane(` perm`,` blocks`) O`
- `IsCollineationOfProjectivePlane(` perm`,` data`) O`

  Let blocks be the blocks of a projective plane and perm a permutation on the points of this plane. `IsCollineationOfProjectivePlane(`perm`,`blocks`)` returns `true`, if perm induces a collineation of the projective plane.

  If data as returned by `ElationPrecalc` is given instead of blocks, the calculation should be faster.

- `IsomorphismProjPlanesByGenerators(` gens1`,` data1`,` gens2`,` data2`) O`
- `IsomorphismProjPlanesByGeneratorsNC(` gens1`,` data1`,` gens2`,` data2`) O`

  Let gens1 be a list of points generating the projective plane defined by data1 and gens2 a list of generating points for data2. Then a permutation is returned representing a mapping from the data1.points to data2.points and mapping the list gens1 to the list gens2. If there is no such mapping which defines an isomorphism of projective planes, `fail` is returned. Note that this is a ``small'' function, in the sense that data1 and data2 are as returned by `ElationPrecalcSmall` rather than by `ElationPrecalc`.

  `IsomorphismProjPlanesByGeneratorsNC` does not checked whether gens1 and gens2 really generate the planes given by data1 and data2.

      # Assume that <blocks> contains a list of lines of a projective plane
      # of order 16
      gap> data:=ElationPrecalc(blocks);;
      gap> Size(ProjectiveClosureOfPointSet([1,2,3,5],16,data));
      4
      gap> Size(ProjectiveClosureOfPointSet([1,2,60,268],16,data));time;
      273
      0
      gap> Size(ProjectiveClosureOfPointSet([1,2,60,268],0,data));time;
      273
      184
      gap> IsomorphismProjPlanesByGenerators([1,2,3,5],data,[1,2,60,268],data);
      fail
      gap> IsomorphismProjPlanesByGenerators([1,2,60,268],data,[1,2,60,268],data);
      ()
      gap> IsomorphismProjPlanesByGenerators([1,2,60,268],data,[1,3,146,268],data);
      (2,3)(5,10)(6,12)(7,9)(8,11)(13,16)(17,249)(18,251)(19,250)( [...] )
      gap> Order(last);
      2

  [Up] [Next] [Index]