# [GAP Forum] Stabilizer of a vector for Coxeter Groups

Mathieu Dutour Mathieu.Dutour at ens.fr
Fri May 16 08:02:34 BST 2008

```Hi,

there are many possible strategy that can be employed.
Right now I can think of two:
1> represent your Coxeter group as a permutation group acting
on the roots r1, ...., rN of your Coxeter group.
Call CoxPermGrp this representation.
Then given a vector v, associate to it the vector of scalar
products
ScalV=(r1.v, r2.v, ......, rN.v)
Afterwards, you can use
Stabilizer(CoxPermGrp, ScalV, Permuted);
The problem is that the permuted action is too slow, because
it does not use backtracking like the OnSets action.
A way around this performance problem is to use

PermutedStabilizer:=function(TheGRP, eVect)
local TheStab, Hset, eVal, ListIdx;
TheStab:=ShallowCopy(TheGRP);
Hset:=Set(eVect);
for eVal in Hset
do
ListIdx:=Filtered([1..Length(eVect)], x->eVect[x]=eVal);
TheStab:=Stabilizer(TheStab, ListIdx, OnSets);
od;
return TheStab;
end;

And if you need equivalence as well, then use

PermutedEquivalence:=function(TheGRP, eVect1, eVect2)
local TheStab, eVect1img, n, eSet1, eSet2, g, eVal, ListIdx1, ListIdx2, gT;
eVect1img:=ShallowCopy(eVect1);
n:=Length(eVect1);
eSet1:=Set(eVect1);
eSet2:=Set(eVect2);
if eSet1<>eSet2 then
return fail;
fi;
g:=();
TheStab:=ShallowCopy(TheGRP);
for eVal in eSet1
do
ListIdx1:=Filtered([1..n], x->eVect1img[x]=eVal);
ListIdx2:=Filtered([1..n], x->eVect2[x]=eVal);
gT:=RepresentativeAction(TheStab, ListIdx1, ListIdx2, OnSets);
if gT=fail then
return fail;
fi;
eVect1img:=Permuted(eVect1img, gT);
g:=g*gT;
if eVect1img=eVect2 then
return g;
fi;
TheStab:=Stabilizer(TheStab, ListIdx2, OnSets);
od;
end;

2> If you really need to treat very large Coxeter group, then the way to
go is by the abstract theory of Coxeter groups. For that you need to map
your element to the fundamental domain (a simplex if the Coxeter group is
irreducible). Then, on the fundamental domain, enumerate the facets to
which it is incident. Those facets give you the generators of the
stabilizer.

On Thu, May 15, 2008 at 05:09:39PM +0100, Caudrelier, Vincent wrote:
>> All,
>>
>>
>>
>> I'm trying to compute the stabilizer of a given vector in the underlying
>> essential vector space of a finite Coxeter group seen as a reflection
>> group acting on this vector space.
>>
>>
>>
>> I've tried with F4 by defining it as a matrix group then typing
>> something like "Stabilizer(F4,[[1],[0],[0],[0]]);" but I suspect this is
>> not doing what I want but rather it gives the stability group of the
>>
>> group element corresponding to the reflection associated to e_1 and not
>> the stability group of e_1 itself.
>>
>>
>>
>> I hope my question makes enough sense and that someone can help me.
>>
>>
>>
>> Many thanks
>>
>>
>>
>> ------------------------
>> Dr Vincent CAUDRELIER
>> Lecturer in Mathematics
>> ------------------------
>> City University
>> Centre for Mathematical Science
>> Northampton Square
>> LONDON EC1V 0HB
>> UK
>> ------------------------
>> tel: +44 (0) 2070 408498
>>
>>
>>
>> _______________________________________________
>> Forum mailing list
>> Forum at mail.gap-system.org
>> http://mail.gap-system.org/mailman/listinfo/forum

```