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 used these operations for the particular groups and (elements) of geometries.
‣ 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>
‣ 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.
‣ 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
generated by GAPDoc2HTML