EXAMPLES:

sage: GQ, S = designs.generalised_quadrangle_with_spread(4, 16, check=False)
sage: GQ
Incidence structure with 325 points and 1105 blocks
sage: GQ2
Incidence structure with 1105 points and 325 blocks
sage: GQ3 = GQ.dual()
sage: set(GQ3._points) == set(GQ2._points)
True
sage: GQ2.is_isomorphic(GQ3) # long time
True


REFERENCES:

AUTHORS:

• Ivo Maffei (2020-07-26): initial version

Compute the dual incidence structure of GQ and return the image of $$O$$ under the dual map

INPUT:

• GQ – IncidenceStructure; the generalised quadrangle we want the dual of

• O – iterable; the iterable of blocks we want to compute the dual

OUTPUT:

A pair (D, S) where D is the dual of GQ and S is the dual of O

EXAMPLES:

sage: from sage.combinat.designs.gen_quadrangles_with_spread import \
....: dual_GQ_ovoid
(9, 3)
sage: t = dual_GQ_ovoid(*t)
(3, 9)
sage: all([x in t[0] for x in t[1]])
True


Construct the generalised quadrangle $$H(3,q^2)$$ with an ovoid.

The GQ has order $$(q^2,q)$$.

INPUT:

• q – integer; a prime power

OUTPUT:

A pair (D, O) where D is an IncidenceStructure representing the generalised quadrangle and O is a list of points of D which constitute an ovoid of D

EXAMPLES:

sage: t = designs.generalised_quadrangle_hermitian_with_ovoid(4)
sage: t[0]
Incidence structure with 1105 points and 325 blocks
sage: len(t[1])
65
sage: G = t[0].intersection_graph([1])  # line graph
sage: G.is_strongly_regular(True)
(325, 68, 3, 17)
sage: set(t[0].block_sizes())
{17}


REFERENCES:

For more on $$H(3,q^2)$$ and the construction implemented here see [PT2009] or [TP1994].

Construct a generalised quadrangle GQ of order $$(s,t)$$ with a spread S.

INPUT:

• s, t – integers; order of the generalised quadrangle

• existence – boolean;

• check – boolean; if True, then Sage checks that the object built is correct. (default: True)

OUTPUT:

A pair $$(GQ, S)$$ where $$GQ$$ is a IncidenceStructure representing the generalised quadrangle and $$S$$ is a list of blocks of $$GQ$$ representing the spread of $$GQ$$.

EXAMPLES:

sage: t = designs.generalised_quadrangle_with_spread(3, 9)
sage: t[0]
Incidence structure with 112 points and 280 blocks
True
Incidence structure with 325 points and 1105 blocks
False


REFERENCES:

For more on generalised quadrangles and their spread see [PT2009] or [TP1994].

Check if GQ is a generalised quadrangle of order $$(s,t)$$ and check that S is a spread of GQ

INPUT:

• GQ – IncidenceStructure; the incidence structure that is supposed to be a generalised quadrangle

• S – iterable; the spread of GQ as an iterable of the blocks of GQ

• s, t – integers (optional); if $$(s,t)$$ are given, then we check that GQ has order $$(s,t)$$

EXAMPLES:

sage: from sage.combinat.designs.gen_quadrangles_with_spread import *