Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

9 Orbits, stabilisers and actions
 9.1 Orbits
 9.2 Stabilisers

9 Orbits, stabilisers and actions

9.1 Orbits

GAP provides generic functionality to compute orbits. These functions are, generally spoken, applicable to the groups implemented in FinInG, combined with the appropriate action functions. However, the generic functions applied in such situations are rather time comsuming. FinInG therefore provides alternative functions to compute orbits.

9.1-1 FiningOrbit
‣ FiningOrbit( g, obj, act )( operation )

Returns: The orbit of the object obj under the action act of the group g.

The argument obj is either a subspace of a projective space, then combined with the action function OnProjSubspaces, or a set of elements of a projective space, then combined with the action function OnSetsProjSubspaces. The group g is a subgroup of a collineation group of a projective space. In both cases the action function computes the action of el under the group element g.

Q(6, 3)
gap> g := CollineationGroup(ps);
PGammaO(7,3)
gap> pg := PG(6,3);
ProjectiveSpace(6, 3)
gap> s := First(Solids(pg),t -> TypeOfSubspace(ps,t) = "elliptic" );
<a solid in ProjectiveSpace(6, 3)>
gap> orbit := FiningOrbit(g,s,OnProjSubspaces);
<closed orbit, 265356 points>
gap> time;
46254
 

The second example shows the possible use of FiningOrbit in combination with the action function OnSetsProjSubspaces. Please note that this variant is probably not the most efficient way to compute all elliptic quadrics contained in the parabolic quadric ps. Experiments show that for q=5 the second variant takes an unreasonable amount of time.Also note that the second argument el must be a set (and therefore it might be necessary to apply Set on a collection of elements).

Q(4, 3)
gap> g := CollineationGroup(ps);
PGammaO(5,3)
gap> pg := PG(4,3);
ProjectiveSpace(4, 3)
gap> s := First(Solids(pg),t -> TypeOfSubspace(ps,t) = "elliptic" );
<a solid in ProjectiveSpace(4, 3)>
gap> orbit1 := FiningOrbit(g,s,OnProjSubspaces);
<closed orbit, 36 points>
gap> time;
5
gap> spts := Filtered(Points(s),s->s in ps);
[ <a point in ProjectiveSpace(4, 3)>, <a point in ProjectiveSpace(4, 3)>, 
  <a point in ProjectiveSpace(4, 3)>, <a point in ProjectiveSpace(4, 3)>, 
  <a point in ProjectiveSpace(4, 3)>, <a point in ProjectiveSpace(4, 3)>, 
  <a point in ProjectiveSpace(4, 3)>, <a point in ProjectiveSpace(4, 3)>, 
  <a point in ProjectiveSpace(4, 3)>, <a point in ProjectiveSpace(4, 3)> ]
gap> orbit2 := FiningOrbit(g,Set(spts),OnSetsProjSubspaces);
<closed orbit, 36 points>
gap> time;
15
 

9.1-2 FiningOrbits
‣ FiningOrbits( g, set, act )( operation )

Returns: The orbits of the group g on set under the action of act.

The set is a set of elements of a projective space, the group g is a subgroup of the collineation group of a projective space, and act is the function OnProjSubspaces.

gap> ps := HermitianPolarSpace(3,9);
H(3, 3^2)
gap> g := CollineationGroup(ps);
PGammaU(4,3^2)
gap> FiningOrbits(g,Lines(PG(3,9)),OnProjSubspaces);
75%..98%..100%..[ <closed orbit, 5670 points>, <closed orbit, 1680 points>, 
  <closed orbit, 112 points> ]
gap> FiningOrbits(g,Planes(PG(3,9)),OnProjSubspaces);
65%..100%..[ <closed orbit, 540 points>, <closed orbit, 280 points> ]
gap> ps := ParabolicQuadric(2,5);
Q(2, 5)
gap> g := CollineationGroup(ps);
PGammaO(3,5)
gap> pts := Filtered(Points(PG(2,5)),x->not x in ps);;
gap> Length(pts);
25
gap> FiningOrbits(g,Points(PG(2,5)),OnProjSubspaces);
19%..67%..100%..[ <closed orbit, 6 points>, <closed orbit, 15 points>, 
  <closed orbit, 10 points> ]
gap> FiningOrbits(g,pts,OnProjSubspaces);
60%..100%..[ <closed orbit, 15 points>, <closed orbit, 10 points> ]
 

9.2 Stabilisers

The GAP function Stabilizer is a generic function to compute stabilisers of one object (or sets or tuples etc. of objects) under a group, using a specified action function. This generic function can be used together with the in FinInG implemented groups and elements of geometries. However, computing time can be very long, already in small geometries.

gap> ps := PG(3,8);
ProjectiveSpace(3, 8)
gap> g := CollineationGroup(ps);
The FinInG collineation group PGammaL(4,8)
gap> p := Random(Points(ps));
<a point in ProjectiveSpace(3, 8)>
gap> Stabilizer(g,p,OnProjSubspaces);
<projective collineation group of size 177223237632>
gap> time;
13527
gap> line := Random(Lines(ps));
<a line in ProjectiveSpace(3, 8)>
gap> Stabilizer(g,line,OnProjSubspaces);
<projective collineation group of size 21849440256>
gap> time;
108345
 

The packages GenSS and orb required by FinInG provide efficient operations to compute stabilisers, and FinInG provides functionality to use these operations for the particular groups and (elements) of geometries.

9.2-1 FiningStabiliser
‣ FiningStabiliser( g, el )( operation )

Returns: The subgroup of g stabilising the element el

The argument g is a group of collineations acting on the element el, being a subspace of a projective space (and hence, all elements of a Lie geometry are allowed as second argument). This operation relies on the GenSS operation Stab.

gap> ps := PG(5,4);
ProjectiveSpace(5, 4)
gap> g := SpecialHomographyGroup(ps);
The FinInG PSL group PSL(6,4)
gap> p := Random(Points(ps));
<a point in ProjectiveSpace(5, 4)>
gap> FiningStabiliser(g,p);
<projective collineation group of size 264696069567283200 with 2 generators>
gap> line := Random(Lines(ps));
<a line in ProjectiveSpace(5, 4)>
gap> FiningStabiliser(g,line);
<projective collineation group of size 3881174040576000 with 3 generators>
gap> plane := Random(Planes(ps));
<a plane in ProjectiveSpace(5, 4)>
gap> FiningStabiliser(g,plane);
#I  Have 106048 points.
#I  Have 158748 points.
<projective collineation group of size 958878292377600 with 2 generators>
gap> ps := HyperbolicQuadric(5,5);
Q+(5, 5)
gap> g := IsometryGroup(ps);
PGO(1,6,5)
gap> p := Random(Points(ps));
<a point in Q+(5, 5)>
gap> FiningStabiliser(g,p);
<projective collineation group of size 36000000 with 3 generators>
gap> line := Random(Lines(ps));
<a line in Q+(5, 5)>
gap> FiningStabiliser(g,line);
<projective collineation group of size 6000000 with 3 generators>
gap> plane := Random(Planes(ps));
<a plane in Q+(5, 5)>
gap> FiningStabiliser(g,plane);
<projective collineation group of size 93000000 with 2 generators>
gap> h := SplitCayleyHexagon(3);
Split Cayley Hexagon of order 3
gap> g := CollineationGroup(h);
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain…
G_2(3)
gap> p := Random(Points(h));
<a point of Split Cayley Hexagon of order 3>
gap> FiningStabiliser(g,p);
<projective collineation group of size 11664 with 3 generators>
gap> line := Random(Lines(h));
<a line of Split Cayley Hexagon of order 3>
gap> FiningStabiliser(g,line);
<projective collineation group of size 11664 with 3 generators>
 

9.2-2 FiningStabiliserOrb
‣ FiningStabiliserOrb( g, el )( operation )

Returns: The subgroup of g stabilising the element el

The argument g is a group of collineations acting on the element el, being a subspace of a projective space (and hence, all elements of a Lie geometry are allowed as second argument). This operation relies on some particular orb functionality.

gap> ps := PG(5,4);
ProjectiveSpace(5, 4)
gap> g := SpecialHomographyGroup(ps);
The FinInG PSL group PSL(6,4)
gap> p := Random(Points(ps));
<a point in ProjectiveSpace(5, 4)>
gap> FiningStabiliserOrb(g,p);
<projective collineation group with 15 generators>
gap> line := Random(Lines(ps));
<a line in ProjectiveSpace(5, 4)>
gap> FiningStabiliserOrb(g,line);
<projective collineation group with 15 generators>
gap> plane := Random(Planes(ps));
<a plane in ProjectiveSpace(5, 4)>
gap> FiningStabiliserOrb(g,plane);
<projective collineation group with 15 generators>
gap> ps := HyperbolicQuadric(5,5);
Q+(5, 5)
gap> g := IsometryGroup(ps);
PGO(1,6,5)
gap> p := Random(Points(ps));
<a point in Q+(5, 5)>
gap> FiningStabiliserOrb(g,p);
<projective collineation group with 15 generators>
gap> line := Random(Lines(ps));
<a line in Q+(5, 5)>
gap> FiningStabiliserOrb(g,line);
<projective collineation group with 15 generators>
gap> plane := Random(Planes(ps));
<a plane in Q+(5, 5)>
gap> FiningStabiliserOrb(g,plane);
<projective collineation group with 15 generators>
gap> h := SplitCayleyHexagon(3);
Split Cayley Hexagon of order 3
gap> g := CollineationGroup(h);
#I  for Split Cayley Hexagon
#I  Computing nice monomorphism...
#I  Found permutation domain…
G_2(3)
gap> p := Random(Points(h));
<a point of Split Cayley Hexagon of order 3>
gap> FiningStabiliserOrb(g,p);
<projective collineation group with 15 generators>
gap> line := Random(Lines(h));
<a line of Split Cayley Hexagon of order 3>
gap> FiningStabiliserOrb(g,line);
<projective collineation group with 15 generators>
 

A small example shows the difference in computing time. Clearly the FiningStabiliserOrb is the fastest way to compute stabilizers of one element.

gap> ps := PG(3,8);
ProjectiveSpace(3, 8)
gap> g := CollineationGroup(ps);
The FinInG collineation group PGammaL(4,8)
gap> p := Random(Points(ps));
<a point in ProjectiveSpace(3, 8)>
gap> g1 := Stabilizer(g,p);
<projective collineation group of size 177223237632>
gap> time;
13759
gap> g2 := FiningStabiliser(g,p);
<projective collineation group of size 177223237632 with 2 generators>
gap> time;
312
gap> g3 := FiningStabiliserOrb(g,p);
<projective collineation group with 15 generators>
gap> time;
46
gap> g1=g2;
true
gap> g2=g3;
true
 

Computing the setwise stabiliser under a group is possible using Stabilizer. Not suprisingly, the computing time can also be very long.

gap> ps := PG(3,4);
ProjectiveSpace(3, 4)
gap> p := Random(Points(ps));
<a point in ProjectiveSpace(3, 4)>
gap> q := Random(Points(ps));
<a point in ProjectiveSpace(3, 4)>
gap> g := CollineationGroup(ps);
The FinInG collineation group PGammaL(4,4)
gap> Stabilizer(g,Set([p,q]),OnSets);
<projective collineation group of size 552960>
gap> time;
16079
 

The package GenSS provides an efficient operation to compute setwise stabilisers, and FinInG provides functionality to used these GenSS operation for the particular groups and (elements) of geometries.

9.2-3 FiningSetwiseStabiliser
‣ FiningSetwiseStabiliser( g, els )( operation )

Returns: The subgroup of g stabilising the set els

The argument g is a group of collineations acting on the element el, being a subspace of a projective space (and hence, all elements of a Lie geometry are allowed as second argument). The argument els is a set of elements of the same type of the same Lie geometry, the elements are all in the category IsSubspaceOfProjectiveSpace. The underlying action function is assumed to be OnProjSubspaces

gap> ps := HyperbolicQuadric(5,5);                   
Q+(5, 5)
gap> g := IsometryGroup(ps);
PGO(1,6,5)
gap> plane1 := Random(Planes(ps));
<a plane in Q+(5, 5)>
gap> plane2 := Random(Planes(ps));
<a plane in Q+(5, 5)>
gap> FiningSetwiseStabiliser(g,Set([plane1,plane2]));
#I  Computing adjusted stabilizer chain...
<projective collineation group with 5 generators>
 

A small example shows the difference in computing time.

gap> ps := ParabolicQuadric(4,4);
Q(4, 4)
gap> g := CollineationGroup(ps);
PGammaO(5,4)
gap> l1 := Random(Lines(ps));
<a line in Q(4, 4)>
gap> l2 := Random(Lines(ps));
<a line in Q(4, 4)>
gap> g1 := Stabilizer(g,Set([l1,l2]),OnSets);
<projective collineation group of size 720>
gap> time;
31095
gap> g2 := FiningSetwiseStabiliser(g,Set([l1,l2]));
#I  Computing adjusted stabilizer chain...
<projective collineation group with 4 generators>
gap> time;
56
gap> g1=g2;
true
 
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B Bib Ind

generated by GAPDoc2HTML