This page contains the commands used during the FinInG session which was held on Wednesday evening at the Fifth Irsee Conference on Finite Geometries (10-16 September 2017) by John Bamberg, Jan De Beule, and Michel Lavrauw.
The evening session was meant as a gentle introduction to the GAP-package FinInG which stands for Finite Incidence Geometry. Further information can be found on fining.org.
The main objectives are to illustrate:
1. Importing geometric objects into your GAP session
2. Performing your computations with FinInG
3. Extracting the information
The lines below can be copied and pasted onto the GAP command line.
# First we load FinInG:
LoadPackage("fining");
# 1. An arc (inspired by the talk of Simeon Ball)
q:=9;
pg:=PG(4,q);
eta:=First(GF(q),x->x^4=-One(GF(q)));
vecs:=List(GF(q),t->[1,t,t^2+eta*t^6,t^3,t^4]*One(GF(q)));
vecs:=Union([[0,0,0,0,1]*One(GF(q))],vecs);
Garc:=List(vecs,v->VectorSpaceToElement(pg,v));
G:=ProjectivityGroup(pg);
H:=FiningSetwiseStabiliser(G,AsSet(Garc));
StructureDescription(H);
# let's check that this is an arc
hyps:=Hyperplanes(pg);
ints:=[];
for h in hyps do
Add(ints,Size(Filtered(Garc,x->x in h)));
od;
AsSet(ints);
Collected(ints);
# a shortcut for the last check would be
Collected( List( Hyperplanes(pg), h -> Number(Garc, x -> x * h) ) );
# 2. A cubic surface and the 27 lines on it (inspired by the talk of Anton Betten)
q:=7;
pg:=PG(3,q);
r:=PolynomialRing(GF(q),4);
f:=r.1^2*r.4+r.2^2*r.3+3*r.2*r.3^2+r.1*r.4^2+3*r.1*r.2*r.3+2*r.1*r.2*r.4+3*r.2*r.3*r.4;
Csur:=AlgebraicVariety(pg,[f]);
pts:=AsList(Points(Csur));;
lines:=Filtered(Lines(pg),l->Number(Points(l),x->x in Csur)=q+1);
Size(lines);
# 3. Klein quadric (a "classic")
q:=7;
k := KleinCorrespondence( q );
Q:=Range(k);
ps:=AmbientGeometry(Q);
PolarSpaceType(ps);
EquationForPolarSpace(ps);
TypesOfElementsOfIncidenceStructure(ps);
l1:=Random(Lines(PG(3,q)));
l2:=First(Lines(PG(3,q)),line->Dimension(Span(l1,line))=3);
p1:=l1^k;p2:=l2^k;
IsCollinear(ps,p1,p2);
l3:=First(Lines(PG(3,q)),line->Dimension(Span(l1,line))=2);
p3:=l3^k;
IsCollinear(ps,p1,p3);
Lines(p1);
Planes(p1);
IsomorphismPolarSpaces(ps,HyperbolicQuadric(5,q));
CollineationGroup(HyperbolicQuadric(5,q));
# 4. Partial spreads of H(5,4) (inspired by work of De Beule and Metsch)
ps := HermitianPolarSpace(5,4);
planes := AsList(Planes(ps));;
coll := CollineationGroup(ps);
adj := function(x,y)
return ProjectiveDimension(Meet(x,y))=-1;
end;
graph := Graph(coll,planes,OnProjSubspaces,adj,true);;
cliques := CompleteSubgraphs(graph);;
Length(cliques);
List(cliques,x->Length(x));
Collected(last);
cliques9 := CompleteSubgraphs(graph,9,2);
partial_spreads := List(cliques9,x->VertexNames(graph){x});;
partial_spreads[1];
List(partial_spreads[1],x->Unpack(UnderlyingObject(x)));
groups := List(partial_spreads,x->FiningSetwiseStabiliser(coll,x));
List(groups,x->Order(x));
StructureDescription(groups[3]);