As Francis Buekenhout defined it in [Bue79], the diagram of a firm, residually connected, flag--transitive geometry Γ is a complete graph K, whose vertices are the elements of the set of types I of Γ, provided with some additional structure which is further described as follows. To each vertex i ∈I, we attach the order si which is | ΓF | - 1 where F is any flag of type I\{ i }, and the number ni of elements of type i of Γ. To every edge { i, j } of K, we associate three positive integers dij, gij and dji where gij (the gonality) is equal to half the girth of the incidence graph of a residue ΓF of type { i, j }, and dij (resp. dji), the i--diameter (resp. j--diameter) is the greatest distance from some fixed i--element (resp. j--element) to any other element in ΓF.
On a picture of the diagram, this structure will often be depicted as follows.
i d_ij g_ij d_ji j O--------------------O s_i-1 s_j-1 n_i n_j
Moreover, when gij = dij = dji = n != 2, we only write gij and if n = 2, we do not draw the edge { i, j }.
Given a firm, residually connected and flag--transitive incidence geometry D or a coset geometry C, return a complete graph K whose vertices and edges are labelled in the following way. Every vertex i of K is labelled with a sequence of two positive integers, the first one being si and the second one being the number of elements of type i in D. Every edge { i, j } is labelled with a sequence of three positive integers which are respectively dij, gij and dji.
Observe that both these functions do the same but the second one works much faster than the first one since it uses groups to compute the parameters of the diagram. So when the user has to compute the diagram of an incidence geometry, it is strongly advised that he first converts it into a coset geometry and then computes the diagram of the corresponding coset geometry.
> IsFirm(ig); true > IsRC(ig); true > IsFTGeometry(ig); true
Since it satisfies these three properties, we can compute its diagram.
> d, v, e := Diagram(ig); > d; Graph Vertex Neighbours 1 2 ; 2 1 ; > for x in v do print x, Label(x);end for; 1 [ 1, 10 ] 2 [ 2, 15 ] > for x in e do print x, Label(x);end for; {1, 2} [ 5, 5, 6 ]
We thus see that the diagram of ig can be drawn as follows.
1 5 5 6 2 O-------------------O 1 2 10 15
> cube := IncidenceGeometry(g); > d, v, e := Diagram(cube); > d; Graph Vertex Neighbours 1 2 3 ; 2 1 3 ; 3 1 2 ; > for x in v do x, Label(x); end for; 1 [ 1, 8 ] 2 [ 1, 12 ] 3 [ 1, 6 ] > for x in e do x, Label(x); end for; {1, 2} [ 4, 4, 4 ] {1, 3} [ 2, 2, 2 ] {2, 3} [ 3, 3, 3 ]
So the diagram can be depicted as follows.
1 4 2 3 3 O-------------------O-------------------O 1 1 1 8 12 6
> ig := IncidenceGeometry(HoffmanSingletonGraph()); > d, v, e := Diagram(ig); d; Graph Vertex Neighbours 1 2 ; 2 1 ; > for x in v do print x, Label(x); end for; 1 [ 1, 50 ] 2 [ 6, 175 ] > for x in e do print x, Label(x); end for; {1, 2} [ 5, 5, 6 ]
So the diagram can be depicted as follows.
1 5 5 6 2 O-------------------O 1 6 50 175
> d, v, e := Diagram(neumaier); > d; Graph Vertex Neighbours 1 2 3 4 ; 2 1 3 4 ; 3 1 2 4 ; 4 1 2 3 ; > for x in v do print x, Label(x); end for; 1 [ 2, 50 ] 2 [ 2, 50 ] 3 [ 2, 50 ] 4 [ 2, 50 ] > for x in e do print x, Label(x); end for; {1, 2} [ 4, 4, 4 ] {1, 3} [ 2, 2, 2 ] {1, 4} [ 3, 3, 3 ] {2, 3} [ 3, 3, 3 ] {2, 4} [ 2, 2, 2 ] {3, 4} [ 4, 4, 4 ]
So the diagram can be depicted as follows.
. 1 4 2 . 2 O-----------------O 2 . 50 | | 50 . | | . | | . 3 | | 3 . | | . | | . | 4 | . 3 O-----------------O 4 . 2 2 . 50 50