Lie-Algebra Class for python sympy
back

Table of Contents
Introduction
Documentation
Examples
Downloads
References

Introduction

PyLie is a collection of classes, which are useful for calculations with Lie-Algebras. At the moment, only complex lie-algebras are  supported. 
PyLie is still under development, and further goals are:
    - The Support of Lie-Algebras over the fields Q, R, and Q + iQ.
    - Further algorithms for semisimple Lie-Algebras
    - Clebsh-Gordon-Theory.

Please be patient, this page is still under construction.

Documentation

class LieStructureConstantTable

The LieStructureConstantTable represents the table of the structure constants of a finite-dimensional Lie-Algebra. The number of entries is defined via the dimension of the LieStructureConstantTable (LieStructureConstantTable.Dim). The Structure Constants are stored in a 3-dimensional python list (LieStructureConstantTable.List). It is: "c_ij^k = LieStructureConstantTable.List[i][j][k]". The class LieStructureConstantTable is used internally in class LieAlgebra.

Constructor:
LieStructureConstantTable(dimV)    -   Constructor, dimV is the dimension of the LieStructureConstantTable.
Attributes:
LieStructureConstantTable.Dim   -   The dimension of the LieStructureConstantTable.
LieStructureConstantTable.List   -   The python list, which contains the Structure Constants in the Layot "c_ij^k = List[i][j][k]".
LieStructureConstantTable.LieFlag    -   True, if the LieStructureConstantTable defines a Lie-Algebra. False if it has not been determined or if it is wrong.
Methods:
LieStructureConstantTable.__eq__(SCTable)    -   Overloaded "=".
LieStructureConstantTable.SetEntry(index1, index2, structureconstantvector)    -   Sets List[i][j][k] = structureconstantvector[k].
LieStructureConstantTable.AutoComplete()    -   Autocompletion of the table using the laws of skew-symmetry.
LieStructureConstantTable.TestJacobiID()    -   Tests if the table fullfills the Jacobi identity.
LieStructureConstantTable.TestAntisymmetry()    -   Tests if the table is antisymmetric.
LieStructureConstantTable.IsLie()    -   Tests if the table defines a Lie-Algebra.

class LieAlgebra

The class LieAlgebra represents a finite-dimensional complex Lie-Algebra. The name of the LieAlgebra is declared in LieAlgebra.Name. The integer dimension of the Lie-Algebra is declared in LieAlgebra.Dim. The structure-constants of the Lie-Algebra are declared in a LieStructureConstantTable (LieAlgebra.StructureConstants). The different flags are used to store information obtained in the Test-Algorithms.(LieAlgebra.IsLie...(), LieAlgebra.IsAdjReprFaithful()).

Constructor:
LieAlgebra(Dim, Name)    -   Constructor, Dim is the dimension of the Lie-Algebra, Name the name of the Lie-Algebra.
Attributes:
LieAlgebra.Name    -   The name of the Lie-Algebra.
LieAlgebra.Dim    -   The dimension of the Lie-Algebra.
LieAlgebra.StructureConstants   -   LieStructureConstantTable which contains the structure constants.
LieAlgebra.UnimodularFlag    -   True if the Lie-Algebra is unimodular. False if it is not unimodular or if this property has not been determined, yet.
LieAlgebra.SemisimpleFlag    -   True, if the Lie-Algebra is semisimple. False if it is not semisimple or if this property has not been determined, yet.
LieAlgebra.SolvableFlag    -   True if the Lie-Algebra is solvable. False if it is not solvable or if this property has not been determined, yet.
LieAlgebra.NilpotentFlag    -   True if the Lie-Algebra is nilpotent. False if it is not nilpotent or if this property has not been determined, yet.
LieAlgebra.AdjReprIsFaithfulFlag    -   True if the adjoint representation of the Lie-Algebra is Faithful. False if it is not, or if this property has not been determined, yet.
Methods:
---Constructing Lie-Algebras---
LieAlgebra.LieAlgebraByStructureConstants( SCTable)    -   Defining a Lie-Algebra via its structureconstants (with a LieStructureConstantTable SCTable).
LieAlgebra.LinearLieAlgebraByMatrices(*Basev)    -   Defining a linear Lie-Algebra via base-matrices (Given in Basev). The number of matrices must equal the Dimension of the Algebra.
---Representations and KillingForm---
LieAlgebra.AdjointMatrix(a)    -   Computes the representation matrix of the adjoint representation of the Element a of the Lie-Algebra. a has to be a python list. Returns a sympy-Matrix.
LieAlgebra.KillingMatrix()    -   Computes the coordinate-representation-matrix of the killing form. Returns a sympy-matrix.
LieAlgebra.IsAdjReprFaithful()    -   True if the adjoint representation is faithful. False if it is not.
LieAlgebra.AdjointRepresentation()    -   Returns the adjoint representation as a LieRepresentation.
---Other Calculations---
LieAlgebra.LieBracket(a,b)    -   Computes the LieBracket of the elements a and b of the Lie-Algebra. a and b have to be python lists. Returns a python list.
LieAlgebra.KillingForm(a,b)    -   Computes the killingform k(a,b) of the elements a and b of the Lie-Algebra. a and b have to be python lists.
LieAlgebra.GLV_Action(matrix)    -   Computes the action of an element "matrix" of the GL(V) on the Lie-Algebra. matrix has to be a sympy-matrix or a 2-D list. Modifies the structure constants of the Lie-Algebra.
LieAlgebra.NonNilpotentElement()    -   Returns a non-nilpotent element of the Lie-Algebra as a python list or returns 0 if the Lie-Algebra is nilpotent.
LieAlgebra.NonNilpotentElementSubAlgebra(Base)    -   Returns a non-nilpotent element of the subalgebra spanned by base. Base has to be a python list of python lists. Returns 0 if the subalgebra is nilpotent.
LieAlgebra.EqualSubSpace(self, Base1, Base2)    -    True, if the subspaces spanned by the python list of python lists Base1 and Base2 are equal. Not, if they are not equal.
---Constructing distinct subalgebras, subspaces and other shiny tings---
LieAlgebra.FittingNullComponent(*nilpotentbase)    -   Calculates the Fitting-Null-Component of a nilpotent subalgebra given by the python lists in nilpotentbase. Returns a list of basevectors of the Fitting-Null-Component.
LieAlgebra.FittingOneComponent(*nilpotentbase)    -   Calculates the Fitting-One-Component of a nilpotent subalgebra given by the python lists in nilpotentbase. Returns a list of basevectors of the Fitting-One-Component.
LieAlgebra.CartanSubalgebra()    -   Calculates a Cartan-Subalgebra of the Lie-Algebra. This algorithm does not work, now.
LieAlgebra.LieCentralizer(*Base)    -   Calculates the centralizer of the subalgebra spanned by Base. Base must consist out of python-lists.
LieAlgebra.LieCenter()    -   Calculates the center of Lie-Algebra
LieAlgebra.LieNormalizer(*Base)    -   Calculates the normalizer of the subalgebra spanned by Base. Base must consist out of python-lists.
LieAlgebra.Productspace( base1, base2)    -   Computes the productspace [<base1>,<base2>] of two subspaces spanned by base1 and base2.
LieAlgebra.LowerCentralSeries(k)    -   Calculates the k-th lower central series. k has to be an integer.
LieAlgebra.DerivedSeries(k)    -    Calculates the k-th derived series. k has to be an integer.
---Properties of the Lie-Algebra---
LieAlgebra.IsLie()    -   Tests if the Lie-Algebra is a Lie-Algebra.
LieAlgebra.IsLieNilpotent()    -   Tests if the Lie-Algebra is nilpotent.
LieAlgebra.IsLieSolvable()    -   Tests if the Lie-Algebra is solvable.
LieAlgebra.IsLieAbelian()    -   Tests if the Lie-Algebra is abelian.
LieAlgebra.IsLieSemiSimple()    -   Tests if the Lie-Algebra is semisimple.
LieAlgebra.IsLieUnimodular()    -   Tests if the Lie-Algebra is unimodular.
---Presentation of Results---
LieAlgebra.PrintNonTrivialBrackets()    -   Prints the non-trivial Lie-Brackets.
LieAlgebra.PrintProperties()    -   Prints the properties listet under "Properties of the Lie-Algebra".

class LieRepresenation

Constructor:
LieRepresentation(LieDim, VDim, *Matrices)    -   Constructor, LieDim is the dimension of the Lie-Algebra, VDim the dimension of the vectorspace, *Matrices contains the base-matrices as sympy-matrices.
Attributes:
LieRepresentation.LieDim    -   The dimension of the Lie-Algebra.
LieRepresentation.VDim    -   The dimension of the vectorspace, on which the representation is acting.
LieRepresentation.lineardependenceflag    -   True, if the base-matrices are linear dependent.
LieRepresentation.BaseMatrices    -   List, which contains the base-matrices of the representation as sympy-matrices.
Methods:
LieRepresentation.IsBase()    -   Tests if the base of the representation is really a base in the mathematical sense
LieRepresentation.RepresentationMatrix(a)    -   Returns the representation-matrix of the element a of the Lie-Algebra (given by a python-list) as a sympy-matrix.
LieRepresentation.MatrixCommutator(a,b)    -   Returns the representation-matrix of the commutator [a,b] of two elements of the Lie-Algebra given by python-lists as a sympy-matrix.
LieRepresentation.CoordinateCommutator(a,b)    -   Returns the coordinate-form of the of the commutator [a,b] of two elements of the Lie-Algebra given by python-lists as a python-list.
LieRepresentation.IsRepresentationLie(LieAlg)    -   Tests if the representation is really a representation of the Lie-Algebra LieAlg.
LieRepresentation.IsFaithful(LieAlg)    -   Tests if the representation is a faithful representation of the Lie-Algebra LieAlg.
LieRepresentation.PrintBase()    -   Prints the base-matrices of the representation.

Examples

A example which investigates all 3-Dimensional Lie-Algebras using the Classification of Bianchi, and all 4-Dimensional Lie-Algebras using the Classification of [3].:
4D3D.py

Downloads

Current Release (Version 0.0.0....0.1 ;-) )

References
[1] Daniel Weiss. Eigenschaften, Darstellungen und Lie-Gruppen vierdimensionaler, komplexer Lie-Algebren. Bachelor Thesis, 2014
[2] W. D. Graaf. Lie Algebras: Theory and Algorithms. 1 edition. Amsterdam: Elsevier Science: 2000. ISBN 0-444-50116-9.
[3] Y. Agaoka. An algorithm to determine the isomorphism classes of 4-dimensional
complex Lie algebras. In: Linear Algebra and its Applications 345(1–3), (2002) pp.
85 – 118. ISSN 0024-3795. doi:http://dx.doi.org/10.1016/S0024-3795(01)00473-6.

License
Copyright 2014, Daniel Weiss
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.