# Incidence graphs of generalised quadrangle and hexagon

For an introduction to generalised polygons, see https://cage.ugent.be/~hvm/artikels/107.pdf.

I am looking to get the incidence graph of the generalised quadrangle $n=4$, and hexagon $n=6$, in particular where the parameters $(s, t)$ of the generalised polygons are equal.

Once found, I would like to create the corresponding polarity graphs, either directly from the incidence graphs, or by first finding the polarity and using it to manually construct the polarity graph.

Does Sagemath have these functions, or if not, how could I construct them?

edit retag close merge delete

1

Please give some references to the mathematical definition of the involved objects. Or some sample minimal code initializing the situation. The "particular case $s=t$" is not really giving helpful information to the reader.

( 2023-12-03 19:08:14 +0100 )edit

Here are some available things:

$git grep "def .*Quadrangle" src/ src/sage/graphs/generators/classical_geometries.py:def AhrensSzekeresGeneralizedQuadrangleGraph(q, dual=False): src/sage/graphs/generators/classical_geometries.py:def T2starGeneralizedQuadrangleGraph(q, dual=False, hyperoval=None, field=None, check_hyperoval=True):$ git grep "def .*Hexagon" src/
src/sage/graphs/generators/distance_regular.pyx:def GeneralisedHexagonGraph(const int s, const int t):

( 2023-12-06 10:34:18 +0100 )edit

Sort by » oldest newest most voted

After the comment of FrédéricC i took at the generalized hexagon graphs that sage may construct for some small values of the $(s, t)$ parameters, in case $s=t$. In each of the cases i want to see the number of vertices, and the number of edges.

Note that these graphs have no supplementary structure, so that a polarity $\pi$ (sending lines to points and preserving incidence relations) cannot be constructed by using any geometric origin.

for s in [2..7]:
try:
G = graphs.GeneralisedHexagonGraph(s, s)
print(f"The GeneralisedHexagonGraph({s}, {s}) has {len(G.vertices())} vertices and {len(G.edges())} edges")
except:
import traceback
traceback.print_exc()


The above produces:

The GeneralisedHexagonGraph(2, 2) has 63 vertices and 189 edges
The GeneralisedHexagonGraph(3, 3) has 364 vertices and 2184 edges
The GeneralisedHexagonGraph(4, 4) has 1365 vertices and 13650 edges
The GeneralisedHexagonGraph(5, 5) has 3906 vertices and 58590 edges


and for the next values we get errors:

• $s=6$

ValueError: No generalised hexagon of order (6, 6) is known

• $s=7$

NotImplementedError: Graph would be too big


But ok, we have some few toy examples to work with. For instance, let us work with the second graph, the one with $364$ vertices.

sage: G = graphs.GeneralisedHexagonGraph(3, 3)
sage: G.vertices()[:10]
[52, 40, 3, 22, 4, 17, 5, 30, 6, 23]
sage: # The vertices of the graphs have thus integers as labels...
sage: # Above sage shows the first ten vertices, as they are stored in some awkward order...
sage: G.edges()[:10]
[(52, 352, None),
(1, 52, None),
(25, 52, None),
(52, 339, None),
(13, 52, None),
(52, 341, None),
(52, 324, None),
(52, 140, None),
(52, 113, None),
(18, 52, None)]
sage: # here are some first few edges, so 52 is connected to 352, 1, 25, 339, 13, 341, ...


This is definitively what you need.

On the other side, one can construct as in the literature the one or the other structure.

You may want to take a look at the GAP-implementations...

https://docs.gap-system.org/pkg/fining/doc/chap12_mj.html

(Sage can work with some GAP-objects, but this is an other story.)

more