LieAlgebras[Nilradical] - find the nilradical of a Lie algebra
LieAlgName - (optional) name or string, the name of a Lie algebra
saveAlg - (optional)an equation of the form saveTemporaryAlgebras = TF, where TF is true or false
The nilradical nil(𝔤) of a Lie algebra 𝔤 is the largest nilpotent ideal contained in 𝔤.
Nilradical(LieAlgName) calculates the nilradical of the Lie algebra g defined by LieAlgName. If no argument is given, then the nilradical of the current Lie algebra is found.
A list of vectors defining a basis for the nilradical of 𝔤 is returned. If the nilradical of g is trivial, then an empty list is returned.
With saveTemporaryAlgebras = true, the Lie algebras created by the program as part of the algorithm for finding the nilradical are not erased and can be initialized for further analysis. Use this option in conjunction with infolevel[Nilradical] := 2. The default is saveTemporaryAlgebras = false.
This module implements the algorithm described in [i] Patera, Winternitz and Zassenhaus, On the Identification of a Lie Algebra Given by its Structure Constants I. Direct Decompositions, Levi Decompositions and Nilradicals. [ii] W. D. Rand, Pascal programs for the identification of Lie algebras I, Comput. Phys. Comm. 41: 105--125 (1986)
The command Nilradical is part of the DifferentialGeometry:-LieAlgebras package. It can be used in the form Nilradical(...) only after executing the commands with(DifferentialGeometry) and with(LieAlgebras), but can always be used by executing DifferentialGeometry:-LieAlgebras:-Nilradical(...).
First we initialize a Lie algebra and then display its multiplication table.
We calculate the nilradical of Alg1 to be 4-dimensional and check that the result is indeed nilpotent. Note that the Lie algebra Alg1 is itself solvable.
N ≔ e1,e2,e3,e4
We show, by way of an example, that the nilradical of a semisimple algebra is trivial.
L2 ≔ e1,e2=e3,e1,e3=−e2,e2,e3=e1
In this example we calculate the nilradical of a certain 4-dimensional Lie algebra. The computations can be examined by setting infolevel[Nilradical] to 2 or 3. With a value of 2, an outline of the main steps is displayed while a value of 3 provides all the intermediate steps. To properly display the results of these intermediate calculations, set saveTemporaryAlgebras = true.
L ≔ e1,e4=e1,e2,e4=e1+e2,e3,e4=e2+e3
Lie algebra: Alg3
infolevelNilradical ≔ 2
Begin Step 1:
solradical(Alg3) = [X1, X2, X3, X4]
the radical of Alg3 is re-initialized as `Alg3:1`
End of Step 1
Begin Step 2:
derived algebra( `Alg3:1`) = A1 = [_e1, _e1+_e2, _e2+_e3]
2nd derived algebra( `Alg3:1`) = A2 = 
the factor algebra of `Alg3:1` by the 2nd derived algebra A2 is initialized as `Alg3:2`
projection([_e1, _e2, _e3, _e4]) = [_e5, _e6, _e7, _e8]
_DG([["LieAlgebra", `Alg3:2`, ], [[[1, 4, 1], 1], [[2, 4, 1], 1], [[2, 4, 2], 1], [[3, 4, 2], 1], [[3, 4, 3], 1]]])
End of Step 2
Begin Step 3:
hypercenter( `Alg3:2`) = C = 
the factor algebra of `Alg3:2` by the hypercenter C is initialized as `Alg3:3`
projection([_e5, _e6, _e7, _e8]) = [_e9, _e10, _e11, _e12]
_DG([["LieAlgebra", `Alg3:3`, ], [[[1, 4, 1], 1], [[2, 4, 1], 1], [[2, 4, 2], 1], [[3, 4, 2], 1], [[3, 4, 3], 1]]])
End of Step 3
Begin Step 4:
derived-algebra(`Alg3:3`) = U = [_e9, _e10, _e11]
complement to U in `Alg3:3` = V = [_e12]
End of Step 4
Begin the Step 5 thru 8 loop, iteration = 1.
Begin Step 5.1:
using the vector X = _e12
f_1 = _z1+1
_z1+1 factors as [[_z1+1, 1]]
f_1 is square-free so go to Step 8.1
End of Step 5.1:
Begin Step 8.1:
the centralizer of _e9 in `Alg3:3` is = M = [_e9, _e10, _e11]
since M = U, the nilradical of `Alg3:3` is U
Begin Step 9:
nilradical(`Alg3:3`) = [_e9, _e10, _e11])
add in the hypercenter C to get nilradical of `Alg3:2`
nilradical(`Alg3:2`) = [_e5, _e6, _e7])
add in the 2nd derived algebra A2 to get nilradical of `Alg3:1`
nilradical(`Alg3:1`) = [_e1, _e2, _e3])
(recall that `Alg3:1` is the nilradical of Alg3)
nilradical(Alg3) = [X1, X2, X3]
End of Step 9:
Download Help Document
What kind of issue would you like to report? (Optional)