CartanDecomposition - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim

LieAlgebras[CartanDecomposition] - find a Cartan decomposition of a non-compact semi-simple Lie algebra

Calling Sequences


     CartanDecomposition(A, alg)

     CartanDecomposition(Alg, CSA, RSD, PosRts) 


     Θ       - a transformation, defining a Cartan involution of a non-compact, semi-simple real Lie algebra

      A       - a list of square matrices, defining a Lie algebra and closed under Hermitian transposition

      alg     - a name or a string, the name of an initialized Lie algebra

      CSA     - a list of vectors, defining a Cartan subalgebra of a Lie algebra

     RSD     - a table, specifying the root space decomposition of the Lie algebra with respect to the Cartan subalgebra CSA

     PosRts  - a list of vectors, specifying a choice of positive roots for the root space decomposition







Let g be a semi-simple real Lie algebra. Then g is called compact if the Killing form of g is negative-definite, otherwise g is called non-compact.


A Cartan decomposition is a vector space decomposition g = tp, where t is a subalgebra, p a subspace, [t, p] ⊆ p and [p, p] ⊆ t, the Killing form  ,  is negative-definite on t and positive-definite on p. The command CartanDecomposition returns 2 lists of vectors. The first list spans the subalgebra t and the second list spans the subspace p. The 3 different calling sequences for CartanDecomposition compute the Cartan decomposition from different data.


 A Cartan involution of g is a Lie algebra automorphism Θ : gg with Θ2=Id and such that the symmetric bilinear form BΘx,y = x,Θy is positive-definite. Given a Cartan involution Θ, the +1, -1 eigenspaces of Θ yield a Cartan decomposition of g . This method of finding a Cartan decomposition is used by the first calling sequence CartanDecomposition(Θ).


For a semi-simple matrix algebra which is closed under Hermitian transposition, the decomposition into skew-Hermitian and Hermitian matrices will give a Cartan decomposition. This method of finding a Cartan decomposition is used by the second calling sequence CartanDecomposition(A, alg).


A Cartan decomposition may also be computed from a Cartan subalgebra, a root space decomposition, and a choice of positive roots. From these data a Cartan involution can be determined and the Cartan decomposition derived from it by the third calling sequence.


with(DifferentialGeometry): with(LieAlgebras):


Example 1.

We find a Cartan decomposition for the Lie algebra sl3from a Cartan involution.

LD := SimpleLieAlgebraData("sl(3)", sl3, labelformat = "gl", labels = ['E', 'omega']):


Lie algebra: sl3



The transformation A At defines a Cartan involution for sl3. With respect to the standard basis for sl3 in terms of elementary matrices, this transformation is given by

sl3 > 

Theta := Transformation([[E11, -E11], [E22, -E22], [E12, -E21], [E13, -E31], [E21, -E12], [E23, -E32], [E31, -E13], [E32, -E23]]);




The corresponding Cartan decomposition is given by

sl3 > 

T, P := CartanDecomposition(Theta);




Let us check the various properties of this decomposition.

1. T is a subalgebra.

sl3 > 

Query(T, "Subalgebra");




2. [T, P]  P

sl3 > 

A := BracketOfSubspaces(T, P);


sl3 > 

GetComponents(A, P, trueorfalse = "on");




3. [P, P]  T 

sl3 > 

B := BracketOfSubspaces(P,P);


sl3 > 

GetComponents(B, T, trueorfalse = "on");




4. Equivalent to 1, 2 and 3 is the fact that T,P form a symmetric pair.

sl3 > 

Query(T, P, "SymmetricPair");




5. The Killing form is negative-definite on T.

sl3 > 



6. The Killing form is positive-definite on P.

sl3 > 

KP := Killing(P);

sl3 > 





All of these properties of the Cartan decomposition can be checked at once with the Query/"CartanDecomposition" command.

sl3 > 

Query(T, P, "CartanDecomposition");




Example 2.

Here we shall calculate the Cartan decomposition of sl3 from its standard matrix representation. We use the Lie algebra initialized in Example 1. The command StandardRepresentation can be applied to any Lie algebra created by SimpleLieAlgebraData.

sl3 > 

M := StandardRepresentation(sl3);


Calculate the Cartan decomposition using the matrices , returning the answer as vectors in the Lie algebra sl3.

sl3 > 

T2, P2 := CartanDecomposition(M, sl3);




The Cartan decomposition in terms of matrices can be obtained as follows.

sl3 > 

T3, P3 := CartanDecomposition(M);

Note that the matrices in T3 are skew-symmetric and that the matrices in P3 are symmetric.


Example 3.

Here we shall calculate the Cartan decomposition of sp4, 2 from its standard matrix representation.

LD := SimpleLieAlgebraData("sp(4, 2)", sp42, labelformat = "gl", labels = ['F', 'sigma']):


Lie algebra: sp42

sl3 > 

M := StandardRepresentation(sp42);


Here is a Cartan decomposition for sp4,2.

sp42 > 

T, P := CartanDecomposition(M, sp42);




Check it.

sp42 > 

Query(T, P, "CartanDecomposition");




Example 4.

We use the third calling sequence to calculate the Cartan decomposition for the split real form of the exceptional Lie algebra g2.

sp42 > 

LD4 := SimpleLieAlgebraData("g(2, Split)", g2);




Lie algebra: g2



Calculate a Cartan subalgebra, a root space decomposition and a choice of positive roots.

sp42 > 

CSA := CartanSubalgebra();


sp42 > 

RSD := RootSpaceDecomposition(CSA);


g2 > 

PosRts := PositiveRoots(RSD);


Find the Cartan decomposition.

g2 > 

T, P := CartanDecomposition(CSA, RSD, PosRts);


g2 > 

Query(T, P, "CartanDecomposition");



See Also