<p>Suppose we have an <em>incidence geometry</em> Γ (as defined in chapter <a href="chap3.html#X838ACF8A7F100A2B"><span class="RefLink">3</span></a>), together with a group <span class="SimpleMath">G</span> of automorphisms of Γ such that <span class="SimpleMath">G</span> is transitive on the set of <em>chambers</em> of Γ (also defined in chapter <a href="chap3.html#X838ACF8A7F100A2B"><span class="RefLink">3</span></a>). This implies that <span class="SimpleMath">G</span> is also transitive on the set of all elements of any chosen type <span class="SimpleMath">i</span>. If we consider a chamber c<sub>1</sub>,c<sub>2</sub>,...,c<sub>n</sub> such that c<sub>i</sub> is of type <span class="SimpleMath">i</span>, we can look at the stabilizer G<sub>i</sub> of c<sub>i</sub> in <span class="SimpleMath">G</span>. The subgroups G<sub>i</sub> are called <em>parabolic subgroups</em> of Γ. For a type <span class="SimpleMath">i</span>, transitivity of <span class="SimpleMath">G</span> on the elements of type <span class="SimpleMath">i</span> gives a correspondence between the cosets of the stabilizer G<sub>i</sub> and the elements of type <span class="SimpleMath">i</span> in Γ. Two elements of Γ are incident if and only if the corresponding cosets have a nonempty intersection.</p>
<p>We now use the above observation to define an incidence structure from a group <span class="SimpleMath">G</span> together with a set of subgroups G<sub>1</sub>,G<sub>2</sub>,...,G<sub>n</sub>. The type set is {1,2,...,n}. By definition the elements of type <span class="SimpleMath">i</span> are the (right) cosets of the subgroup G<sub>i</sub>. Two cosets are incident if and only if their intersection is not empty. This is an incidence structure which is not necessarily a geometry (see Chapter <a href="chap3.html#X838ACF8A7F100A2B"><span class="RefLink">3</span></a> for definitions). In order to check whether a coset incidence structure is indeed a geometry you can use the command <code class="file">IsFlagTransitiveGeometry</code> which (in case it returns <code class="file">true</code>) guarantees that the argument is a geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsCosetGeometry</code></td><td class="tdright">( category )</td></tr></table></div>
<p>This category is a subcategory of <code class="code">IsIncidenceGeometry</code>, and contains all coset geometries.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CosetGeometry</code>( <var class="Arg">G</var>, <var class="Arg">l</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the coset incidence structure defined by the list <var class="Arg">l</var> of subgroups of the group <var class="Arg">G</var>.</p>
<p><var class="Arg">G</var> must be a group and <var class="Arg">l</var> is a list of subgroups of <var class="Arg">G</var>. The subgroups in <var class="Arg">l</var> will be the <em>parabolic subgroups</em> of the <em>coset incidence structure</em> whose rank equals the length of <var class="Arg">l</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsIncident</code>( <var class="Arg">ele1</var>, <var class="Arg">ele2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">ele1</var> and <var class="Arg">ele2</var> are incident</p>
<p><var class="Arg">ele1</var> and <var class="Arg">ele2</var> must be two elements in the same coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AmbientGroup</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the group used to define the coset geometry <var class="Arg">cg</var></p>
<p><var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RandomElement</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a random element of <var class="Arg">cg</var></p>
<p><var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ RandomFlag</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a random flag of <var class="Arg">cg</var></p>
<p><var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFlagTransitiveGeometry</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if the group <var class="Arg">G</var> defining <var class="Arg">cg</var> acts flag-transitively.</p>
<p><var class="Arg">cg</var> must be a coset geometry.</p>
<p>The group <span class="SimpleMath">G</span> used to define <var class="Arg">cg</var> acts naturally on the elements of <var class="Arg">cg</var> by right translation: a coset <span class="SimpleMath">G_ig</span> is mapped to <span class="SimpleMath">G_i(gx)</span> by an element <span class="SimpleMath">x∈ G</span>. This test can be quite time consuming. You can bind the attribute <code class="code">IsFlagTransitiveGeometry</code> if you are sure the coset geometry is indeed flag-transitive.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ OnCosetGeometryElement</code>( <var class="Arg">ele</var>, <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the image of the <code class="file">CosetGeometryElement</code> <var class="Arg">ele</var> under the action of <var class="Arg">g</var></p>
<p>The group element <var class="Arg">g</var> must belong to <code class="file">AmbientGroup(AmbientGeometry(ele))</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \^</code>( <var class="Arg">ele</var>, <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: an element of a coset geometry</p>
<p>This is an operation which returns the image of <var class="Arg">ele</var>, an element of a coset incidence structure, under <var class="Arg">g</var>, an element of <code class="file">AmbientGroup(AmbientGeometry(ele))</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \^</code>( <var class="Arg">flg</var>, <var class="Arg">g</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a flag of a coset geometry</p>
<p>This is an operation which returns the image of <var class="Arg">flg</var>, a flag of a coset incidence structure, under <var class="Arg">g</var>, an element of <code class="file">AmbientGroup(AmbientGeometry(flg))</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsFirmGeometry</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">cg</var> is firm.</p>
<p>An incidence geometry is said to be <em>firm</em> if every non-maximal flag is contained in at least two chambers. <var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsThickGeometry</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">cg</var> is thick.</p>
<p>An incidence geometry is said to be <em>thick</em> if every non-maximal flag is contained in at least three chambers. <var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsThinGeometry</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">cg</var> is thin.</p>
<p>An incidence geometry is said to be <em>thin</em> if every rank one residue contains exactly 2 elements. This means that every comaximal flag is contained in exactly 2 chambers. <var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsConnected</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">cg</var> is connected.</p>
<p>A geometry is <em>connected</em> if and only if its incidence graph is connected. <var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsResiduallyConnected</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: true if and only if <var class="Arg">cg</var> is residually connected.</p>
<p>A geometry is <em>residually connected</em> if the incidence graphs of all its residues of rank at least 2 are connected. <var class="Arg">cg</var> must be a coset geometry.</p>
<p>This test is quite time consuming. You can bind the attribute <code class="code">IsResiduallyConnected</code> if you are sure the coset geometry is indeed residually connected.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps:=HyperbolicQuadric(7,2);</span>
Q+(7, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=IsometryGroup(ps);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">reps:=RepresentativesOfElements(ps);</span>
[ <a point in Q+(7, 2)>, <a line in Q+(7, 2)>, <a plane in Q+(7, 2)>,
<a solid in Q+(7, 2)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">solids:=Orbit(g,reps[4]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">ps:=HyperbolicQuadric(7,2);</span>
Q+(7, 2)
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=IsometryGroup(ps);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">reps:=RepresentativesOfElements(ps);</span>
[ <a point in Q+(7, 2)>, <a line in Q+(7, 2)>, <a plane in Q+(7, 2)>,
<a solid in Q+(7, 2)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">h:=DerivedSubgroup(g);; # to get greek and latin solids</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">orbs:=FiningOrbits(h,Solids(ps));;</span>
50%..100%..gap> List(orbs, Size);
[ 135, 135 ]
<span class="GAPprompt">gap></span> <span class="GAPinput">Filtered(orbs[2], s -> ProjectiveDimension(Meet(orbs[1][1],s))=2); # to</span>
[ <a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>,
<a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>,
<a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>,
<a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>,
<a solid in Q+(7, 2)>, <a solid in Q+(7, 2)>, <a solid in Q+(7, 2)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">#find a latin incident with the greek which is orbs[1][1]</span>
<span class="GAPprompt">gap></span> <span class="GAPinput"># Now we have a chamber</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">goodreps:=[reps[1],reps[2],orbs[1][1],last[1]];</span>
[ <a point in Q+(7, 2)>, <a line in Q+(7, 2)>, <a solid in Q+(7, 2)>,
<a solid in Q+(7, 2)> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">pabs:=List(goodreps, r -> FiningStabiliser(h,r));</span>
[ <projective collineation group of size 1290240 with 2 generators>,
<projective collineation group of size 110592 with 4 generators>,
<projective collineation group of size 1290240 with 2 generators>,
<projective collineation group of size 1290240 with 4 generators> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">cos:=CosetGeometry(h,pabs);</span>
CosetGeometry( Group(
[ ProjElWithFrob(NewMatrix(IsCMatRep,GF(2,1),8,[
[ Z(2)^0, Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0 ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2)
],]),IdentityMapping( GF(2) )), ProjElWithFrob(NewMatrix(IsCMatRep,GF(2,
1),8,[[ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2)
],]),IdentityMapping( GF(2) )), ProjElWithFrob(NewMatrix(IsCMatRep,GF(2,
1),8,[[ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ],
[ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2) ],
[ 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ],
[ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ],
[ Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), Z(2)^0
],]),IdentityMapping( GF(2) )) ] ) )
<span class="GAPprompt">gap></span> <span class="GAPinput">IsConnected(cos);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">IsResiduallyConnected(cos);</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">time;</span>
419960
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ StandardFlagOfCosetGeometry</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: standard chamber of <var class="Arg">cg</var></p>
<p>The standard chamber just consists of all parabolic subgroups (i.e. the trivial cosets of these subgroups). The object returned is a FlagOfIncidenceStructure. <var class="Arg">cg</var> must be a coset geometry.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ FlagToStandardFlag</code>( <var class="Arg">cg</var>, <var class="Arg">fl</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: element of the defining group of <var class="Arg">cg</var> which maps <var class="Arg">fl</var> to the standard chamber of <var class="Arg">cg</var>.</p>
<p><var class="Arg">fl</var> must be a chamber given as a list of cosets of the parabolic subgroups of <var class="Arg">cg</var>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">L:=SimpleLieAlgebra("D",8,Rationals);</span>
<Lie algebra of dimension 120 over Rationals>
<span class="GAPprompt">gap></span> <span class="GAPinput">rs:=RootSystem(L);</span>
<root system of rank 8>
<span class="GAPprompt">gap></span> <span class="GAPinput">w:=WeylGroup(rs);</span>
<matrix group with 8 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">gens:=GeneratorsOfGroup(w);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">pabs:=List(gens, g -> Group(Difference(gens, [g])));</span>
[ <matrix group with 7 generators>, <matrix group with 7 generators>,
<matrix group with 7 generators>, <matrix group with 7 generators>,
<matrix group with 7 generators>, <matrix group with 7 generators>,
<matrix group with 7 generators>, <matrix group with 7 generators> ]
<span class="GAPprompt">gap></span> <span class="GAPinput">g:=Group(gens);</span>
<matrix group with 8 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">cg:=CosetGeometry(g,pabs);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">cham:=RandomChamber(cg);; # Time of last command: 23945 ms</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">FlagToStandardFlag(cg,cham); # Time of last command: 1720 ms</span>
[ [ 0, 0, 0, 0, 1, -1, 0, 0 ], [ 0, 0, 0, 1, 0, -1, 0, 0 ],
[ 0, 0, 0, 1, 0, 0, -1, -1 ], [ 1, -1, 0, 1, 0, 0, -1, -1 ],
[ 0, -1, 0, 1, 0, 0, -1, -1 ], [ 0, -1, 0, 1, 0, 0, 0, -2 ],
[ 0, -1, 1, 0, 0, 0, 0, -1 ], [ 0, -1, 0, 1, 0, 0, 0, -1 ] ]
<span class="GAPprompt">gap></span> <span class="GAPinput">cham^last = StandardFlagOfCosetGeometry(cg); # Time of last command:1005 ms</span>
true
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CanonicalResidueOfFlag</code>( <var class="Arg">cg</var>, <var class="Arg">fl</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: coset geometry isomorphic to residue of <var class="Arg">fl</var> in <var class="Arg">cg</var></p>
<p><var class="Arg">cg</var> must be a coset incidence structure and <var class="Arg">fl</var> must be a flag in that incidence structure. The returned coset incidence structure for a flag <span class="SimpleMath">{G_i_1g_i_1,G_i_2g_i_2,... , G_i_kg_i_k}</span> is the coset incidence structure defined by the group <span class="SimpleMath">H:=∩_j=1^kG_i_j</span> and parabolic subgroups <span class="SimpleMath">G_j∩ H</span> for <span class="SimpleMath">j</span> not in the type set <span class="SimpleMath">{i_1,i_2,... ,i_k}</span> of <var class="Arg">fl</var>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ResidueOfFlag</code>( <var class="Arg">fl</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the residue of <var class="Arg">fl</var> in <code class="file">AmbientGeometry(fl)</code>.</p>
<p>This is a <code class="file">CosetGeometry</code> method for the <code class="file">ResidueOfFlag</code> operation given in Chapter <a href="chap3.html#X838ACF8A7F100A2B"><span class="RefLink">3</span></a>. Note that the related operation <code class="file">CanonicalResidueOfFlag</code> takes <em>two</em> arguments.</p>
<p><var class="Arg">cg</var> must be a coset geometry. The graph returned is a <strong class="pkg">GRAPE</strong> object. All <strong class="pkg">GRAPE</strong> functionality can now be used to analyse <var class="Arg">cg</var> via its incidence graph.</p>
<p><var class="Arg">cg</var> must be a coset geometry of rank 2. <var class="Arg">type</var> must be either <code class="code">1</code> or <code class="code">2</code>. This function computes the point diameter of <var class="Arg">cg</var> when <var class="Arg">type</var> is <code class="code">1</code> and the line diameter when <var class="Arg">type</var> is <code class="code">2</code>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeometryOfRank2Residue</code>( <var class="Arg">resi</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the geometry of the <code class="file">Rank2Residue</code> object <var class="Arg">resi</var>.</p>
<p>The rank 2 residues of a geometry are fundamental when dealing with diagrams. Therefore they are kept in an attribute as (a list of) objects of type <code class="file">Rank2Residue</code>. The present operation just extracts the residue as a coset geometry from such a <code class="file">Rank2Residue</code> object.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Rank2Parameters</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a list of length 3.</p>
<p><var class="Arg">cg</var> must be a coset geometry of rank 2. This function computes the gonality, point and line diameter of <var class="Arg">cg</var>. These appear as a list in the first entry of the returned list. The second entry contains a list of length 2 with the point order and the total number of points (i.e. elements of type 1) in the geometry. The last entry contains the line order and the number of lines (i.e. elements of type 2).</p>
<p>The following example illustrates <code class="file">Rank2Parameters</code>. It uses <strongclass="pkg">AtlasRep</strong> to fetch the second Janko group, also known as the Hall-Janko group. Beware that <strong class="pkg">AtlasRep</strong> needs special write permissions on some systems. The constructed geometry has gonality 6 and both diameters equal to 8. It is known as the <em>Cohen-Tits near octagon</em>.</p>
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">LoadPackage("atlasrep");</span>
true
<span class="GAPprompt">gap></span> <span class="GAPinput">j2:=AtlasGroup("J2"); #Uses AtlasRep package</span>
<permutation group of size 604800 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">max3:=AtlasSubgroup(j2,3); #member of 3rd ATLAS class of max. subgps</span>
<permutation group of size 1920 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">max4:=AtlasSubgroup(j2,4); #member of 4th ATLAS class of max. subgps</span>
<permutation group of size 1152 with 2 generators>
<span class="GAPprompt">gap></span> <span class="GAPinput">conj3:=ConjugacyClassSubgroups(j2,max3);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g1:=First(conj3, c -> Size(Intersection(c,max4))=384);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">g2:=max4;;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">cg:=CosetGeometry(j2,[g1,g2]);;</span>
<span class="GAPprompt">gap></span> <span class="GAPinput">Rank2Parameters(cg);</span>
[ [ 6, 8, 8 ], [ 2, 315 ], [ 4, 525 ] ]
<h4>13.2 <span class="Heading">Automorphisms, Correlations and Isomorphisms</span></h4>
<p>An <em>automorphism</em> of an incidence structure Γ is a permutation of the element set of Γ such that incidence is preserved and types are fixed (i.e. the type of the image of an element coincides with the type of that element). One way to compute the (full) automorphism group of Γ is to compute its incidence graph and then use the available <code class="file">nauty</code> machinery to obtain the group.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AutGroupIncidenceStructureWithNauty</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: permutation group isomorphic to the full automorphism group of <var class="Arg">cg</var>.</p>
<p>The group is computed with <code class="file">nauty</code>, which is part of <strong class="pkg">GRAPE</strong> but has to be compiled on your system before use. The group returned is a permutation group acting on the set <code class="file">[1..Sum(TypesOfElementsOfIncidenceStructure(cg), t -> NrElementsOfIncidenceStructure(cg,t))]</code>, which is exactly the vertex set of <codeclass="file">IncidenceGraph(cg)</code>. At the moment the action of the automorphism group on <code class="file">cg</code> is not provided but it can be recovered from the knowledge that the vertex set of <code class="file">IncidenceGraph(cg)</code> first contains all elements of type 1 in <code class="file">cg</code>, then all elements of type 2, etc. or, better still, with the <strong class="pkg">GRAPE</strong> command <code class="file">VertexNames</code> (see example below).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CorGroupIncidenceStructureWithNauty</code>( <var class="Arg">cg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: permutation group isomorphic to the full automorphism group of <var class="Arg">cg</var>.</p>
<p>The group is computed with <code class="file">nauty</code>, which is part of <strong class="pkg">GRAPE</strong> but has to be compiled on your system before use. The group returned is a permutation group acting on the set <code class="file">[1..Sum(TypesOfElementsOfIncidenceStructure(cg), t -> NrElementsOfIncidenceStructure(cg,t))]</code>, which is exactly the vertex set of <codeclass="file">IncidenceGraph(cg)</code>. At the moment the action of the automorphism group on <code class="file">cg</code> is not provided but it can be recovered from the knowledge that the vertex set of <code class="file">IncidenceGraph(cg)</code> first contains all elements of type 1 in <code class="file">cg</code>, then all elements of type 2, etc. or with the <strong class="pkg">GRAPE</strong> command <code class="file">VertexNames</code>.</p>
<p>We use <code class="file">nauty</code>, which is part of <strong class="pkg">GRAPE</strong> but has to be compiled on your system before use. Isomorphism is tested (with <code class="file">nauty</code>) after converting the coset geometries <var class="Arg">cg1</var> and <var class="Arg">cg2</var> to coloured graphs.</p>
<p>The <em>diagram</em> of a flag-transitive incidence geometry is a schematic description of the structure of the geometry. It is based on the collection of rank 2 residues of the geometry.</p>
<p>Technically, the diagram is added to a <code class="file">CosetGeometry</code> object as a mutable attribute. Also the list of rank 2 residues of the geometry is added as an attribute once these have been computed. This is done with the operations <code class="file">Rank2Residues</code> (to add the attribute) and <code class="file">MakeRank2Residue</code> (to actually compute the residues). These operations are not for everyday use and hence remain undocumented.</p>
<p>Since the geometry is flag-transitive, all chambers are equivalent. Let's fix a chamber C = { c1,c2,...,cn}, with ci of type i. For each subset {i,j} of size two in {1,2,...n} we take the residue of the flag C \ { ci, cj}. Flag transitivity ensures that all residues of type {i,j} are isomorphic to each other. For each such residue, the structure is described by some parameters: the gonality and the point and line diameters. For each type i, we also define the i-order to be one less than the number of elements of type i in the residue of a(ny) flag of type I∖{i}. All this information is depicted in a diagram which is basically a labelled graph with vertex set I and edges whenever the point diameter, the line diameter and the gonality are all greater than 2.
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DiagramOfGeometry</code>( <var class="Arg">Gamma</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the diagram of the geometry <var class="Arg">Gamma</var></p>
<p><var class="Arg">Gamma</var> must be a flag-transitive coset geometry.</p>
<p>The flag-transitivity is not tested by this operation because such a test can be time consuming. The command <code class="code">IsFlagTransitiveGeometry</code> can be used to check flag-transitivity if needed.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ GeometryOfDiagram</code>( <var class="Arg">diag</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: the geometry of which <var class="Arg">diag</var> is the diagram</p>
<p><var class="Arg">diag</var> must be a diagram object.</p>
--> --------------------
--> maximum size reached
--> --------------------
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.38Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.