# Unitals

A unital in the classical projective plane $PG_2(q^2)$ is a set of $q^3 + 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 $q^2$, 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: unital (ex-fe7f50)`

The following code computes the Hermitian unital given by the equation $x^{q + 1} + y^{q + 1} + z^{q + 1} = 0$ in $PG_2(q^2)$ for $q = 3$.

```magma
> 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$:

```magma
> V.1 in hu;
false

```

For a point in $hu$:

```magma
> UnitalFeet(P, hu, Rep(hu));
{  ( 1 : 0 : w^7 ) }

```

Now we construct the design given by $hu$.

```magma
> 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

```
