\Chapter{Determining the Isomorphism Class of Projective Planes}

The methods in this chapter do not deal with relative difference
sets. Instead, they help studying projective planes. So if you have a
relative difference set, you must first generate the projective plane
it defines (if it does).

Projective planes are always assumed to consist of positive integers
(as points) and sets of integers (as blocks). The incidence relation
is assumed to be the element relation. The blocks of a projective
plane must be *sets*.

The following methods generate a record characterising the projective
plane. As most of the functions in this chapter need this data, the
record returned by `ElationPrecalc' or `ElationPrecalcSmall' is the
recommended representation of projective planes. 

\Declaration{ElationPrecalc}

In the following sections, some of the functions have two versions.
The versions which have a `Small' appended to it's name do not depend
on the data generated by `ElationPrecalc', but rather on the data
structure provided by `ElationPrecalcSmall'. The `Small' versions are
generally much slower than the other ones.

\Declaration{DualPlane}

\Declaration{ProjectiveClosureOfPointSet}

%%%%%%%%%%%%%%%%%%%%
\Section{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.

\Declaration{IsIsomorphismOfProjectivePlanes}
\Declaration{IsCollineationOfProjectivePlane}
\Declaration{IsomorphismProjPlanesByGenerators}

\begintt
# 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
\endtt


%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Central Collineations}

Let $\phi$ be a collineation of a projective plane which fixes one
point block-wise (the so-called *centre*) and one block point-wise
(the so-called *axis*). If the centre is contained in the axis, $\phi$
is called *elation*. Otherwise, $\phi$ is called *homology*. The group
of elations with given axis is called *translation group* of the plane
(relative to the chosen axis). A projective plane with transitive
translation group is called *translation plane*. Here transitivity is
on the points outside the axis.

\Declaration{ElationsByPairs}
\Declaration{AllElationsCentAx}
\Declaration{AllElationsAx}
\Declaration{IsTranslationPlane}
\Declaration{HomologyByPairSmall}
\Declaration{GroupOfHomologiesSmall}

%%%%%%%%%%%%%%%%%%%%
\Section{Collineations on Baer Subplanes}

Let $P$ be a projective plane of order $n^2$. A subplane $B$ of order
$n$ of $P$ is called *Baer subplane*. Baer suplanes are exactly the
maximal subplanes of $P$.

\Declaration{InducedCollineation}

%%%%%%%%%%%%%%%%%%%%
\Section{Invariants for Projective Planes}

The functions `NrFanoPlanesAtPoints', `pRank', `FingerprintAntiFlag'
and `FingerprintProjPlane' calculate invariants for finite projective
planes. For more details see \cite{RoederDiss} and
\cite{MoorhouseGraphs}. The values of some of these invariants are
available from the homepages of \cite{Moorhouse} and \cite{Royle} for
many planes.

\Declaration{NrFanoPlanesAtPoints}
\Declaration{NrFanoPlanesAtPointsSmall}
\Declaration{IncidenceMatrix}
\Declaration{pRank}
\Declaration{FingerprintProjPlane}
\Declaration{FingerprintAntiFlag}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E
%%

