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 ]
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)> ]
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 -> Span(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)> ]
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)> ]
gap> g := CollineationGroup(pg);
PGammaL(3,4)
gap> stab := Stabilizer(g,Set(hyperoval),OnSets);
<projective semilinear group of size 720>
gap> StructureDescription(stab);
"S6"