Unitals

A unital in the classical projective plane PG2(q2) is a set of q3 + 1 points such that every line meeting two of these points meets exactly q + 1 of them.

IsUnital(P, U) : Plane, { PlanePt } -> BoolElt
Given a set of points U belonging to a projective plane P defined over a field of cardinality q2, return true if U is a unital.
AllTangents(P, U) : Plane, { PlanePt } -> { PlaneLn }
Given a unital set of points U in the projective plane P, return the set of tangents to the points of U.
UnitalFeet(P, U, p) : Plane, { PlanePt }, PlanePt -> { PlanePt }
The set of intersections of the unital set of points U with the tangents to U in the plane P which pass through the point p.

Example Plane_unital (H150E11)

The following code computes the Hermitian unital given by the equation xq + 1 + yq + 1 + zq + 1 = 0 in PG2(q2) for q = 3.
> q := 3;
> F<w> := GaloisField(q ^ 2);
> P, V, L := FiniteProjectivePlane(F);
>
> hu := { V | [x,y,z] : x, y, z in F |
>                x^(q+1) + y^(q+1) + z^(q+1) eq 0 and {x, y, z} ne {0} };
>
> IsUnital(P, hu);
true
> UnitalFeet(P, hu, V.1);
{  ( 0 : 1 : w ), ( 0 : 1 : w^3 ), ( 0 : 1 : w^5 ), ( 0 : 1 : w^7 ) }
Since this set has more than one element, V.1 must not be in hu:
> V.1 in hu;
false
For a point in hu:
> UnitalFeet(P, hu, Rep(hu));
{  ( 1 : 0 : w^7 ) }
Now we construct the design given by hu.
> blks := [blk : lin in L | #blk eq (q+1) where blk is lin meet hu ];
> D := Design< 2, SetToIndexedSet(hu) | blks >;
> D;
2-(28, 4, 1) Design with 63 blocks
V2.28, 13 July 2023