[GAP Forum] semsimple algebras and subalgebras

R.N. Tsai r_n_tsai at yahoo.com
Mon Feb 17 20:32:15 GMT 2014


Dear Willem and forum,

Thanks for the quick response. The function you created "DecomposeAdRep" is
exactly what I was looking for. Also getting the highest weight of the
adjoint rep works for simple algebras; but I think it has trouble with
direct sum of simple algebras :

# A1+A1 -> A1 (or D2->D1 or O4->O3 ) branching rule for adjoint rep :
gap> r:=LieAlgebraAndSubalgebras("A1 A1");;
gap> L:= r.liealg;;
gap> K:= r.subalgs[1];;
# this gives the correct decomposition : 6->3+1+1+1;
gap> dec:=DecomposeAdRep( L, K );
[ <vector space of dimension 3 over Rationals>, <vector space of dimension 1 over Rationals>, 
  <vector space of dimension 1 over Rationals>, <vector space of dimension 1 over Rationals> ]

# however this has a problem; dim should be 6.
gap> wt:= PositiveRootsAsWeights( RootSystem(L) );;
gap> hw:= wt[ Length(wt) ];
[ 0, 2 ]
gap> dim:=DimensionOfHighestWeightModule(L,hw);
3

Regards,
R.N.



On Monday, February 17, 2014 12:39 AM, Willem de Graaf <degraaf at science.unitn.it> wrote:
 
Dear R.N. Tsai,


You asked:


> I'd like to identify
> the subalgebra irreps with concrete subspaces of the main algebra. Is there
> a (hopefully simple) way to extract this information?

Not directly, however it is not so difficult to write some code for that.
At the bottom of this message please find a GAP function that does that.
It is followed by an example. 

One remark: in your piece of code you use the command

      Dimension(HighestWeightModule(sub,bra[1][k]))


It is much more efficient to use 

      DimensionOfHighestWeughtModule( sub, bra[1][k] );

as this avoids constructing the module.

You also asked:

> is there a general way to get the weight of the adjoint rep for an
> arbitrary semisimple algebra?

If the Lie algebra is denoted L, then you can do

wt:= PositiveRootsAsWeights( RootSystem(L) );;
hw:= wt[ Length(wt) ];

I am glad that the sla package is of use to you.

Best wishes,

Willem de Graaf

# function:

DecomposeAdRep:= function( L, K ) 

        # K is a subalgebra of L, both semisimple in char 0;
        # we return the decomposition of L as K module.

    local cg, e, x, ad, i, spaces, spaces0, h, ww, sp, mat, es, hwv;

    cg:= CanonicalGenerators( RootSystem(K) );
    e:= List( Basis(L), x -> [ ] );
    for x in cg[1] do
        ad:= TransposedMat( AdjointMatrix(Basis(L),x) );
        for i in [1..Length(ad)] do
            Append( e[i], ad[i] );
        od;
    od;
    spaces:= [ List( NullspaceMat(e), u -> u*Basis(L) ) ];

    for h in cg[3] do
        spaces0:= [ ];
        for ww in spaces do 
            sp:= Basis( Subspace(L,ww), ww );
            mat:= List( ww, u-> Coefficients(sp,h*u) );  
            es:= Eigenspaces( LeftActingDomain(L), mat );
            for i in [1..Length(es)] do
                Add( spaces0, List( Basis(es[i]), x -> x*ww ) );
            od;
        od;
        spaces:= spaces0;
    od;

    hwv:= Concatenation( spaces );
    spaces:= [ ];
    for i in [1..Length(hwv)] do
        Add( spaces, MutableBasisOfClosureUnderAction( LeftActingDomain(L),
                 cg[2], "left", [ hwv[i] ], \*, Zero(L), Dimension(L) ) );
    od;
    return List( spaces, u -> Subspace(L,BasisVectors(u)) );

end;


# example:

gap> r:= LieAlgebraAndSubalgebras("G2");;
gap> L:= r.liealg;;
gap> K:= r.subalgs[5];;
gap> DecomposeAdRep( L, K );
[ <vector space over Rationals, with 8 generators>, 
  <vector space over Rationals, with 3 generators>, 
  <vector space over Rationals, with 3 generators> ]


More information about the Forum mailing list