Database of generalised quadrangles with spread#
This module implements some construction of generalised quadrangles with spread.
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, O = designs.generalised_quadrangle_hermitian_with_ovoid(4)
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
>>> from sage.all import *
>>> GQ, S = designs.generalised_quadrangle_with_spread(Integer(4), Integer(16), check=False)
>>> GQ
Incidence structure with 325 points and 1105 blocks
>>> GQ2, O = designs.generalised_quadrangle_hermitian_with_ovoid(Integer(4))
>>> GQ2
Incidence structure with 1105 points and 325 blocks
>>> GQ3 = GQ.dual()
>>> set(GQ3._points) == set(GQ2._points)
True
>>> GQ2.is_isomorphic(GQ3) # long time
True
REFERENCES:
AUTHORS:
Ivo Maffei (2020-07-26): initial version
- sage.combinat.designs.gen_quadrangles_with_spread.dual_GQ_ovoid(GQ, O)[source]#
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 ofO
– iterable; the iterable of blocks we want to compute the dual
OUTPUT:
A pair
(D, S)
whereD
is the dual ofGQ
andS
is the dual ofO
EXAMPLES:
sage: from sage.combinat.designs.gen_quadrangles_with_spread import \ ....: dual_GQ_ovoid sage: t = designs.generalised_quadrangle_hermitian_with_ovoid(3) sage: t[0].is_generalized_quadrangle(parameters=True) (9, 3) sage: t = dual_GQ_ovoid(*t) sage: t[0].is_generalized_quadrangle(parameters=True) (3, 9) sage: all([x in t[0] for x in t[1]]) True
>>> from sage.all import * >>> from sage.combinat.designs.gen_quadrangles_with_spread import dual_GQ_ovoid >>> t = designs.generalised_quadrangle_hermitian_with_ovoid(Integer(3)) >>> t[Integer(0)].is_generalized_quadrangle(parameters=True) (9, 3) >>> t = dual_GQ_ovoid(*t) >>> t[Integer(0)].is_generalized_quadrangle(parameters=True) (3, 9) >>> all([x in t[Integer(0)] for x in t[Integer(1)]]) True
- sage.combinat.designs.gen_quadrangles_with_spread.generalised_quadrangle_hermitian_with_ovoid(q)[source]#
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)
whereD
is an IncidenceStructure representing the generalised quadrangle andO
is a list of points ofD
which constitute an ovoid ofD
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}
>>> from sage.all import * >>> t = designs.generalised_quadrangle_hermitian_with_ovoid(Integer(4)) >>> t[Integer(0)] Incidence structure with 1105 points and 325 blocks >>> len(t[Integer(1)]) 65 >>> G = t[Integer(0)].intersection_graph([Integer(1)]) # line graph >>> G.is_strongly_regular(True) (325, 68, 3, 17) >>> set(t[Integer(0)].block_sizes()) {17}
REFERENCES:
For more on \(H(3,q^2)\) and the construction implemented here see [PT2009] or [TP1994].
- sage.combinat.designs.gen_quadrangles_with_spread.generalised_quadrangle_with_spread(s, t, existence=False, check=True)[source]#
Construct a generalised quadrangle GQ of order \((s,t)\) with a spread S.
INPUT:
s
,t
– integers; order of the generalised quadrangleexistence
– boolean;check
– boolean; ifTrue
, 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 sage: designs.generalised_quadrangle_with_spread(5, 25, existence=True) True sage: (designs.generalised_quadrangle_with_spread(4, 16, check=False))[0] Incidence structure with 325 points and 1105 blocks sage: designs.generalised_quadrangle_with_spread(0, 2, existence=True) False
>>> from sage.all import * >>> t = designs.generalised_quadrangle_with_spread(Integer(3), Integer(9)) >>> t[Integer(0)] Incidence structure with 112 points and 280 blocks >>> designs.generalised_quadrangle_with_spread(Integer(5), Integer(25), existence=True) True >>> (designs.generalised_quadrangle_with_spread(Integer(4), Integer(16), check=False))[Integer(0)] Incidence structure with 325 points and 1105 blocks >>> designs.generalised_quadrangle_with_spread(Integer(0), Integer(2), existence=True) False
REFERENCES:
For more on generalised quadrangles and their spread see [PT2009] or [TP1994].
- sage.combinat.designs.gen_quadrangles_with_spread.is_GQ_with_spread(GQ, S, s=None, t=None)[source]#
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 quadrangleS
– iterable; the spread ofGQ
as an iterable of the blocks ofGQ
s
,t
– integers (optional); if \((s,t)\) are given, then we check thatGQ
has order \((s,t)\)
EXAMPLES:
sage: from sage.combinat.designs.gen_quadrangles_with_spread import * sage: t = generalised_quadrangle_hermitian_with_ovoid(3) sage: is_GQ_with_spread(*t) Traceback (most recent call last): ... TypeError: 'int' object is not iterable sage: t = dual_GQ_ovoid(*t) sage: is_GQ_with_spread(*t) True sage: is_GQ_with_spread(*t, s=3) True
>>> from sage.all import * >>> from sage.combinat.designs.gen_quadrangles_with_spread import * >>> t = generalised_quadrangle_hermitian_with_ovoid(Integer(3)) >>> is_GQ_with_spread(*t) Traceback (most recent call last): ... TypeError: 'int' object is not iterable >>> t = dual_GQ_ovoid(*t) >>> is_GQ_with_spread(*t) True >>> is_GQ_with_spread(*t, s=Integer(3)) True