In this example, we consider a hyperoval of the projective plane PG(2,4), that is, six points no three collinear.


gap> pg := ProjectiveSpace(2,4);
PG(2, 4)
gap> points := Points(pg);
<points of PG(2, 4)>
gap> pointslist := AsList(points);
[ <a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)> ]
gap> Display(pointslist[1]);
[ 0*Z(2), 0*Z(2), Z(2)^0 ]

Now we may assume that our hyperoval contains the fundamental frame.


gap> frame := [[1,0,0],[0,1,0],[0,0,1],[1,1,1]]*Z(2)^0;
[ [ Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0, Z(2)^0 ] ]
gap> frame := List(frame,x -> VectorSpaceToElement(pg,x));
[ <a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)> ]

There are six secant lines to this frame (four choose two). So we put together these secant lines from the pairs of points of this frame.


gap> pairs := Combinations(frame,2);
[ [ <a point in PG(2, 4)>, <a point in PG(2, 4)> ],
[ <a point in PG(2, 4)>, <a point in PG(2, 4)> ],
[ <a point in PG(2, 4)>, <a point in PG(2, 4)> ],
[ <a point in PG(2, 4)>, <a point in PG(2, 4)> ],
[ <a point in PG(2, 4)>, <a point in PG(2, 4)> ],
[ <a point in PG(2, 4)>, <a point in PG(2, 4)> ] ]
gap> secants := List(pairs,p -> Join(p[1],p[2]));
[ <a line in PG(2, 4)>, <a line in PG(2, 4)>, <a line in PG(2, 4)>,
<a line in PG(2, 4)>, <a line in PG(2, 4)>, <a line in PG(2, 4)> ]

By a simple counting argument, it is known that the frame of PG(2,4) completes uniquely to a hyperoval.


gap> leftover := Filtered(pointslist,t->not ForAny(secants,s->t in s));
[ <a point in PG(2, 4)>, <a point in PG(2, 4)> ]
gap> hyperoval := Union(frame,leftover);
[ <a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)>,
<a point in PG(2, 4)>, <a point in PG(2, 4)>, <a point in PG(2, 4)> ]

This hyperoval has S6 as its stabiliser, which can easily be calculated:


gap> g := CollineationGroup(pg);
PGammaL(3,4)
gap> stab := Stabilizer(g,Set(hyperoval),OnSets);
<projective group with Frobenius of size 720>
gap> StructureDescription(stab);
"S6"
Research Group Incidence Geometry Research Group Incidence Geometry
faculty logo
Help | Contact
login