FinInG (a finite geometry package for GAP)

Over a long period time, there have been numerous people involved in developing a GAP package which deals primarily with objects in finite geometry. It all started when Max Neunhöffer visited Perth about seven years ago, and Maska Law, Sven Reichard, Michel Lavrauw and I were interested in systematically developing this package. Max is a GAP guru and taught us much about how to properly design code and he led the way on the group theoretic side of things. In fact, if it wasn’t for the GenSS and Orb packages, our package would not be as nice as it is now.

The team grew and includes contributions from Michael Pauley, Philippe Cara, Jan De Beule, Michel Lavrauw and Anton Betten.

From left to right: Philippe Cara, Michel Lavrauw, Max Neunhöffer, Jan De Beule, me.

I should also mention that there was a precursor to our package developed in Ghent (Jan was one of the authors) called PG, which mainly dealt with projective spaces, where the quadrics and Hermitian varieties were given essentially as algebraic varieties. Jan and I separated the underlying functionality of the polar spaces component of FinInG to build a separate package Forms which is a stand-alone GAP package dealing primarily with quadratic and sesquilinear forms on finite vector spaces. This allows a user to specify the form of their choice via a Gram matrix or polynomial, and there is also some code which returns a form preserved by a matrix group (up to similarity).

We are still working on FinInG, but it is more-or-less in good working order. Much of the basic functionality is quite robust now, and we are currently working on the finer points. The package can be downloaded from here and more recent versions will appear there periodically. Here is a sample of what can be done using this software; a construction of the Patterson ovoid. (In future posts, I’ll provide better and more illustrative examples of the use of FinInG).

gap> LoadPackage("FinInG");;
gap> id := IdentityMat(7, GF(3));;
gap> form := QuadraticFormByMatrix(id, GF(3));
< quadratic form >
gap> ps := PolarSpace( form );
<polar space in ProjectiveSpace(6,GF(3)): x_1^2+x_2^2+x_3^2+x_4^2+x_5^2+x_6^2+x_7^2=0 >
gap> psl32 := PSL(3,2);
Group([ (4,6)(5,7), (1,2,4)(3,6,5) ])
gap> reps := [[1,1,1,0,0,0,0], [2,1,1,0,0,0,0],
              [1,2,1,0,0,0,0], [1,1,2,0,0,0,0]] * One(GF(3));;
gap> ovoid := Union( List(reps, x -> Orbit(psl32, x, Permuted)) );;
gap> ovoid := List(ovoid, x -> VectorSpaceToElement(ps, x));;
gap> planes := Planes( ps );
<planes of Q(6, 3): x_1^2+x_2^2+x_3^2+x_4^2+x_5^2+x_6^2+x_7^2=0>
gap> ForAll(planes, p -> Number(ovoid, x -> x * p) = 1);
true
gap> g := CollineationGroup( ps );
<projective semilinear group of size 9170703360 with 3 generators>
gap> stabiliser := SetwiseStabilizer(g, OnProjSubspaces, ovoid)!.setstab;
<projective semilinear group with 14 generators>
gap> points := AsList( Points(ps) );;
gap> OrbitLengths( stabiliser, points );
[336, 28]
gap> DisplayCompositionSeries( stabiliser );
G (size 1451520)
 | B(3,2) = O(7,2) ~ C(3,2) = S(6,2)
1 (size 1)

4 thoughts on “FinInG (a finite geometry package for GAP)”

  1. Hi,

    with a recent GAP installation I get the following when trying to use the package (I have
    Homology and GGRAPE on my gaplocal directory, where I also unpacked fining). Do you have any suggestion to deal with this error?

    Thanks in advance,


    ~$ gap -l "$GAP_DIR;/home/rafael/Dropbox/gaplocal"
    ┌───────┐ GAP, Version 4.5.6 of 16-Sep-2012 (free software, GPL)
    │ GAP │ http://www.gap-system.org
    └───────┘ Architecture: i686-pc-linux-gnu-gcc-default32
    Libs used: gmp, readline
    Loading the library and packages ...
    #I Package `GRAPE': non-Unix architecture or binaries not compiled
    #I Package `GRAPE': functions depending on nauty will not work
    Components: trans 1.0, prim 2.1, small* 1.0, id* 1.0
    Packages: DESIGN 1.6, GAPDoc 1.5.1, GGRAPE 0.3.1, GRAPE 4.6.1,
    Homology 1.4.5, IO 4.2
    Try '?help' for help. See also '?copyright' and '?authors'
    gap> LoadPackage("fining");
    ---------------------------------------------------------------------
    Loading 'Forms' 1.2.2 (29/08/2011)
    by John Bamberg (http://school.maths.uwa.edu.au/~bamberg/)
    Jan De Beule (http://cage.ugent.be/~jdebeule)
    For help, type: ?Forms
    ---------------------------------------------------------------------
    ─────────────────────────────────────────────────────────────────────────────
    Loading orb 4.5 (orb - Methods to enumerate orbits)
    by Juergen Mueller (http://www.math.rwth-aachen.de/~Juergen.Mueller),
    Max Neunhoeffer (http://www-groups.mcs.st-and.ac.uk/~neunhoef), and
    Felix Noeske (http://www.math.rwth-aachen.de/~Felix.Noeske).
    Homepage: http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/orb.html
    ─────────────────────────────────────────────────────────────────────────────
    ─────────────────────────────────────────────────────────────────────────────
    Loading genss 1.5 (genss - generic Schreier-Sims)
    by Max Neunhoeffer (http://www-groups.mcs.st-and.ac.uk/~neunhoef) and
    Felix Noeske (http://www.math.rwth-aachen.de/~Felix.Noeske).
    Homepage: http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/genss.html
    ─────────────────────────────────────────────────────────────────────────────
    Error, variable `IncidenceGraph' is not bound to an operation called from
    ( )
    called from read-eval loop at line
    159 of /home/rafael/Dropbox/gaplocal/pkg/fining/gap/diagram.gd
    you can 'quit;' to quit to outer loop, or
    you can 'return;' to continue
    brk>

  2. I’m not exactly sure what is going on, but it looks like you need to compile GRAPE. This should be easy since you are using Linux. Just run
    ~$ ./configure ../..
    ~$ make
    Let me know if this doesn’t resolve the issue.

    1. Thanks for your answer.

      The message about GRAPE not being compiled is just a spurious note from one of the packages I load because it really is compiled. I have just commented out the code in gap.ini that loads packages and all of the contents on .gaprc, in order to start with a “clean” GAP, and now the error is different! See:


      ~$ gap -l "$GAP_DIR;/home/rafael/Dropbox/gaplocal"
      ┌───────┐ GAP, Version 4.5.6 of 16-Sep-2012 (free software, GPL)
      │ GAP │ http://www.gap-system.org
      └───────┘ Architecture: i686-pc-linux-gnu-gcc-default32
      Libs used: gmp, readline
      Loading the library and packages ...
      Components: trans 1.0, prim 2.1, small* 1.0, id* 1.0
      Packages: AClib 1.2, Alnuth 3.0.0, AtlasRep 1.5.0, AutPGrp 1.5,
      Browse 1.8.2, CRISP 1.3.5, Cryst 4.1.10, CrystCat 1.1.6,
      CTblLib 1.2.1, FactInt 1.5.3, FGA 1.1.1, GAPDoc 1.5.1, IO 4.2,
      IRREDSOL 1.2.1, LAGUNA 3.6.1, Polenta 1.3.1, Polycyclic 2.10.1,
      RadiRoot 2.6, ResClasses 3.1.1, Sophus 1.23, TomLib 1.2.2
      Try '?help' for help. See also '?copyright' and '?authors'
      gap> LoadPackage("fining");
      ---------------------------------------------------------------------
      Loading 'Forms' 1.2.2 (29/08/2011)
      by John Bamberg (http://school.maths.uwa.edu.au/~bamberg/)
      Jan De Beule (http://cage.ugent.be/~jdebeule)
      For help, type: ?Forms
      ---------------------------------------------------------------------
      ─────────────────────────────────────────────────────────────────────────────
      Loading orb 4.5 (orb - Methods to enumerate orbits)
      by Juergen Mueller (http://www.math.rwth-aachen.de/~Juergen.Mueller),
      Max Neunhoeffer (http://www-groups.mcs.st-and.ac.uk/~neunhoef), and
      Felix Noeske (http://www.math.rwth-aachen.de/~Felix.Noeske).
      Homepage: http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/orb.html
      ─────────────────────────────────────────────────────────────────────────────
      ─────────────────────────────────────────────────────────────────────────────
      Loading genss 1.5 (genss - generic Schreier-Sims)
      by Max Neunhoeffer (http://www-groups.mcs.st-and.ac.uk/~neunhoef) and
      Felix Noeske (http://www.math.rwth-aachen.de/~Felix.Noeske).
      Homepage: http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/genss.html
      ─────────────────────────────────────────────────────────────────────────────
      ─────────────────────────────────────────────────────────────────────────────
      Loading GRAPE 4.6.1 (GRaph Algorithms using PErmutation groups)
      by Leonard H. Soicher (http://www.maths.qmul.ac.uk/~leonard/).
      Homepage: http://www.maths.qmul.ac.uk/~leonard/grape/
      ─────────────────────────────────────────────────────────────────────────────
      Syntax error: warning: unbound global variable in /home/rafael/Dropbox/gaploca\
      l/pkg/fining/gap/group.gi line 1634
      block := RESET( MutableCopyMat( gram{[1,2]}{[1,2]} ), 2, q);
      ^
      Syntax error: warning: unbound global variable in /home/rafael/Dropbox/gaploca\
      l/pkg/fining/gap/group.gi line 1636
      mat := First( GL(2,f), t -> RESET(t * block^frob *TransposedMat(t), 2, q)\
      = block);
      ^
      #I method installed for MutableCopyMat matches more than one declaration
      #I method installed for MutableCopyMat matches more than one declaration
      ---------------------------------------------------------------------
      Loading FinInG 1.0(beta of 12/5/11) (Finite Incidence Geometry)
      by John Bamberg (http://cage.ugent.be/~bamberg)
      Anton Betten (http://www.math.colostate.edu/~betten)
      Jan De Beule (http://cage.ugent.be/~jdebeule)
      Philippe Cara (http://homepages.vub.ac.be/~pcara)
      Michel Lavrauw (http://cage.ugent.be/~ml)
      Maska Law (https://www.maths.uwa.edu.au/Members/maska)
      Max Neunhoeffer (http://www.math.rwth-aachen.de/~Max.Neunhoeffer)
      Michael Pauley (https://www.maths.uwa.edu.au/Members/pauley)
      Sven Reichard (https://www.maths.uwa.edu.au/Members/reichard)
      For help, type: ?FinInG
      ---------------------------------------------------------------------
      true

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: