Algorithms and libraries of abstract unitals and their embeddings
Version 0.6
This project is maintained by Gábor Péter Nagy, Dávid Mezőfi
UnitalSZ
Algorithms and library of abstract unitals and their embeddings
You can download the tar
of the package from the homepage GAP Package
UnitalSZ and you can install it for
GAP the usual way. Check the homepage for the dependencies of the package
UnitalSZ
.
In the following example we define her
to be the Hermitian unital of order 8
and bm_unital
to be the orthogonal Buekenhout–Metz (BM) unital of order 8
as well. Note the “the”: for other q
s there may be more non-isomorphic
BM-unitals.
gap> LoadPackage( "UnitalSZ" );
gap> q := 2^3;;
gap> her := HermitianAbstractUnital( q );;
gap> KnownAttributesOfObject( her );
[ "Name", "Order" ]
gap> params := AllBuekenhoutMetzAbstractUnitalParameters( q );;
gap> Length( params );
1
gap> bm_unital := OrthogonalBuekenhoutMetzAbstractUnital( q, params[1][1], params[1][2] );
OrthogonalBuekenhoutMetzAbstractUnital(8,Z(2^6)^62,Z(2^6)^60)
gap> KnownAttributesOfObject( bm_unital );
[ "Name", "Order", "PointNamesOfUnital" ]
Then we compute the automorphism group of bm_unital
and the orbit
lengths of this group. We also check whether the Hermitian unital her
and the
BM-unital bm_unital
are isomorphic or not: the result fail
indicates that
they are not isomorphic (of course).
gap> ag := AutomorphismGroup( bm_unital );;
gap> OrbitLengths( ag );
[ 512 ]
gap> Isomorphism( her, bm_unital );
fail
As we have seen, there is some information stored about the unital objects
her
and bm_unital
: we can access these with the command
KnownAttributesOfObject
. After computing the full points of
bm_unital
we obtain much more information about the unital. With
SetInfoLevel
we get some additional messages about the ongoing computation
of the full points.
gap> SetInfoLevel( InfoUnitalSZ, 2);
gap> FullPointsOfUnitalRepresentatives( bm_unital );;
#I 1896 block pair(s) up to automorphisms computed
#I 1 full point(s) found
#I 2 full point(s) found
#I 3 full point(s) found
#I 4 full point(s) found
#I 5 full point(s) found
#I 6 full point(s) found
#I 7 full point(s) found
gap> KnownAttributesOfObject( bm_unital );
[ "Name", "Order", "AutomorphismGroup", "PointsOfUnital", "BlocksOfUnital",
"PointNamesOfUnital", "IncidenceDigraph", "FullPointsOfUnitalRepresentatives" ]
The concept of unitals arises from unitary polarities over finite projective planes: the absolute points of such a polarity form a unital. The combinatorial properties of a unital obtained as above lead us to the definition of an abstract unital.
In design theory context we call a 2-(q³+1, q+1, 1) design an abstract unital. It means that we have q³+1 points and subsets with q+1 elements of the points called blocks and for every pair of points there is exactly one block containing these 2 points.
Currently there are 4 “named” unitals available in the package:
HermitianAbstractUnital( q )
;OrthogonalBuekenhoutMetzAbstractUnital( q, alpha, beta )
;BuekenhoutTitsAbstractUnital( q )
andBagchiBagchiCyclicUnital(
n )
.Of course there are options for constructing your own unital:
AbstractUnitalByDesignBlocks( blocklist )
;AbstractUnitalByIncidenceMatrix( incmat )
;AbstractUnitalByBlistList( bmat )
.There is also access to different attributes of a unital:
PointsOfUnital( u )
;PointNamesOfUnital( u )
. If there is any. It comes
handy when the (abstract) unital can be represented in a more structured
way (e.g., Buekenhout–Metz unital).BlocksOfUnital( u )
;IncidenceDigraph( u )
;AutomorphismGroup( u )
.And as in the example above, one can check isomorphism between two unitals
u1
and u2
with Isomorphism( u1, u2 )
.
Apart from the unitals mentioned above, we’ve made 3 libraries of unitals available : they are results of different papers (see the section References in the documentation for more details). A useful command can be the following, which prints some essential informations about these libraries:
gap> DisplayUnitalLibraryInfo();
For the definition of a full point see the documentation. They can be seen as tools for obtaining non-embeddability results. The following command computes the full points of the first unital in the KNP library (up to automorphisms of the unital):
gap> FullPointsOfUnitalRepresentatives( KNPAbstractUnital(1) );
[ rec( block1 := [ 1, 2, 3, 4, 5 ], block2 := [ 6, 10, 27, 35, 41 ], fullpts :=
[ 39 ] ), rec( block1 := [ 1, 2, 3, 4, 5 ], block2 := [ 6, 36, 52, 58, 63 ],
fullpts := [ 9, 34, 50, 59, 64 ] ) ]
The group of perspectivities from one block to another is closely related
to full points, and it serves as tool for testing embeddability.
PerspectivityGroupOfUnitalsBlocks
is the command for computing this group.
For the exact specification of its arguments please refer to the documentation.