The diagram of a firm, residually connected, flag--transitive geometry Gamma is a complete graph K, whose vertices are the elements of the set of types I of Gamma, provided with some additional structure which is further described as follows. To each vertex i in I, we attach the order s_i which is | Gamma_F | - 1 where F is any flag of type I\{ i }, and the number n_i of elements of type i of Gamma. To every edge { i, j } of K, we associate three positive integers d_(ij), g_(ij) and d_(ji) where g_(ij) (the gonality) is equal to half the girth of the incidence graph of a residue Gamma_F of type { i, j }, and d_(ij) (resp. d_(ji)), the i--diameter (resp. j--diameter) is the greatest distance from some fixed i--element (resp. j--element) to any other element in Gamma_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 g_(ij) = d_(ij) = d_(ji) = n != 2, we only write g_(ij) and if n = 2, we do not draw the edge { i, j }.
Given a firm, residually connected and flag--transitive incidence geometry D, 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 s_i 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 d_(ij), g_(ij) and d_(ji).This function is not yet implemented for coset geometries. But once again, we can convert a coset geometry into an incidence geometry and then compute its diagram.
> 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
> gr := Graph<10|
> {1,2},{1,5},{1,6},{2,7},{2,3},{3,8},{3,4},{4,9},{4,5},{5,10},
> {6,8},{8,10},{10,7},{7,9},{9,6}>;
> ig := IncidenceGeometry(gr);
> aut := AutomorphismGroup(ig);
> n := NormalSubgroups(aut);
> X1 := VertexSet(gr);
> g := CompleteGraph(50);
> e := EdgeSet(gr);
> ebis := [];
> for x in EdgeSet(gr) do
> for i := 1 to 50 do
> for j := i+1 to 50 do
> if VertexSet(gr)!i in x then
> if VertexSet(gr)!j in x then
> Append( ebis,[i,j]);
> end if;
> end if;
> end for;
> end for;
> end for;
> for i := 1 to #ebis do
> RemoveEdge( g,ebis[i][1],ebis[i][2]);
> end for;
> c := Clique(g,15);
> cbis := [];
> for i := 1 to 50 do
> if (VertexSet(gr)!i in c) then Append( cbis,i); end if;
> end for;
> c := Set(cbis);
> X2 := Orbit(n[2]`subgroup,c);
> X2 := SetToSequence(X2);
> e := [];
> for i := 1 to 50 do
> for j := 1 to 50 do
> if X1!i in Neighbours(X1!j) then Append( e,{i,j+50}); end if;
> end for;
> end for;
> for i :=1 to 50 do
> for j := 1 to 50 do
> if not(i in X2[j]) then Append( e,{i,j+100});end if;
> end for;
> end for;
> for i :=1 to 50 do
> for j := 1 to 50 do
> if i in X2[j] then Append( e,{i,j+150});end if;
> end for;
> end for;
> for i :=1 to 50 do
> for j := 1 to 50 do
> if i in X2[j] then Append( e,{i+50,j+100});end if;
> end for;
> end for;
> for i :=1 to 50 do
> for j := 1 to 50 do
> if not(i in X2[j]) then Append( e,{i+50,j+150});end if;
> end for;
> end for;
> for i :=1 to 50 do
> for j := 1 to 50 do
> if X2[i] meet X2[j] eq {} then Append( e,{i+100,j+150});end if;
> end for;
> end for;
> gr2 := Graph<200|Set(e)>;
> v := VertexSet(gr2);
> labs := [i: j in {1..50}, i in {1..4}];
> AssignLabels(v,labs);
> neumaier := IncidenceGeometry(gr2);
> 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[Next][Prev] [Right] [Left] [Up] [Index] [Root]