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> 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)
```
1. November 7, 2012 3:35 am

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?

``` ~\$ 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. November 7, 2012 7:40 am

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.

• November 7, 2012 8:17 am

``` ~\$ 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 ```