Ask Your Question
0

How to find the element with maximal length in a double coset of a Coxeter group?

asked 2021-11-04 16:45:27 +0200

lijr07 gravatar image

Let $W$ be a finite Coxeter group. Denote by $W_I$ the subgroup of $W$ generated by $s_i$, $i \in I$, $I$ is a subset of the set of vertices of the Dynkin diagram of $W$. For every $w \in W$, and $I, J$ subsets of the set of vertices of the Dynkin diagram, I would like to write a function in Sagemath to find the element of maximal length in the double coset $W_I w W_J$. In type A, the case of symmetric group, I wrote the following program and it works.

def LongestPermInDoubleCoset(S1,w,S2): # longest element in S1 w S2, S1,S2 are subgroups of S_n

    winner = W.identity()
    for u1 in S1:
        for u2 in S2:
            t1=u1*w*u2
            if t1.length()>winner.length():
            winner=t1
    r=winner

return r

W=SymmetricGroup(6)
[s1,s2,s3,s4,s5] = W.simple_reflections()
S1=[W.identity(), s1]
S2=[W.identity(),s2]
t1=LongestPermInDoubleCoset(S1,s1,S2)
t2=t1.reduced_word()
t2

One problem in the above program is that I have to give S1, S2 explicitly. I would like to revise the program such that when given S1, S2, I only need to give simple reflections. For example, when give S1=[W.identity(), s1], I would like to give S1 = <generated by="" s1="">.

Another problem in the above program is that it works only for symmetric group. How to revise it such that it works for any Coxeter group (or at least Weyl group)? Thank you very much.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2022-01-23 15:05:49 +0200

lijr07 gravatar image

The following codes work.

def LongestPermInDoubleCosetWeylGroupGivenTypeRank(S1,w,S2,typ,rank): # typ='A', longest element in S1 w S2, S1,S2 are generating sets
    W=WeylGroup(typ+str(rank), prefix = 's')
    g1=W.subgroup(S1)
    g2=W.subgroup(S2)
    winner = W.one()
    for u1 in g1:
        for u2 in g2:
            t1=u1*w*u2
            if t1.length()>winner.length():
                winner=t1
    r=winner

    return r

typ='A'
rank=4
W=WeylGroup(typ+str(rank), prefix = 's')
s = W.simple_reflections()
t2=LongestPermInDoubleCosetWeylGroupGivenTypeRank([s[1],s[2]],s[1]*s[3],[s[2]], typ, rank)
t2
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2021-11-04 16:45:27 +0200

Seen: 135 times

Last updated: Jan 23 '22