ReflectionSubgroup( W, r )
Returns the reflection subgroup of the real reflection group W generated by the reflections with roots specified by r. r is a list of indices specifying a subset of the roots of W.
A reflection subgroup H of W is a permutation subgroup, and otherwise has the same fields as a Coxeter group, with some new ones added which express the relationship with the parent W:
rootInclusion:
parentN:
rootRestriction:2*H.parentN with entries in
positions H.rootInclusion bound to [1..2*H.N].
A Coxeter group which is not a subgroup actually also contains these
fields, set to the trivial values: rootInclusion = [ 1 .. 2*W.N ],
parentN = W.N and rootRestriction = [ 1 .. 2*W.N ].
With these fields, you can, e.g., test if the i-th fundamental root of H root is left positive by the element w of H (given as a permutation of the roots of the parent) with
H.rootInclusion[ i ] ^ w <= H.parentN
Programs dealing with Coxeter groups should be written this way to work
for Coxeter subgroups (instead of just writing i^w <= H.N).
ReflectionSubgroup returns a subgroup of the parent group of the
argument (like the GAP function Subgroup).
gap> W := CoxeterGroup( "F", 4 );;
gap> H := ReflectionSubgroup( W, [ 1, 2, 11, 20 ] );
ReflectionSubgroup(CoxeterGroup("F", 4), [ 1, 2, 9, 16 ])
gap> CartanName( H );
"D4" # not a parabolic subgroup
gap> H.rootRestriction;
[ 1, 2,,, 5,,,, 3,, 6,,, 8,, 4,, 7,, 9,, 10, 11, 12, 13, 14,,, 17,,,,
15,, 18,,, 20,, 16,, 19,, 21,, 22, 23, 24 ]
gap> ReflectionSubgroup( H, [ 1, 2, 6 ] );
ReflectionSubgroup(CoxeterGroup("F", 4), [ 1, 2, 3 ])
This function requires the package "chevie" (see RequirePackage).
GAP 3.4.4