/usr/share/axiom-20170501/src/algebra/LIE.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | )abbrev domain LIE AssociatedLieAlgebra
++ Author: J. Grabmeier
++ Date Created: 07 March 1991
++ Date Last Updated: 14 June 1991
++ Description:
++ AssociatedLieAlgebra takes an algebra \spad{A}
++ and uses \spadfun{*$A} to define the
++ Lie bracket \spad{a*b := (a *$A b - b *$A a)} (commutator). Note that
++ the notation \spad{[a,b]} cannot be used due to
++ restrictions of the current compiler.
++ This domain only gives a Lie algebra if the
++ Jacobi-identity \spad{(a*b)*c + (b*c)*a + (c*a)*b = 0} holds
++ for all \spad{a},\spad{b},\spad{c} in \spad{A}.
++ This relation can be checked by
++ \spad{lieAdmissible?()$A}.
++
++ If the underlying algebra is of type
++ \spadtype{FramedNonAssociativeAlgebra(R)} (a non
++ associative algebra over R which is a free \spad{R}-module of finite
++ rank, together with a fixed \spad{R}-module basis), then the same
++ is true for the associated Lie algebra.
++ Also, if the underlying algebra is of type
++ \spadtype{FiniteRankNonAssociativeAlgebra(R)} (a non
++ associative algebra over R which is a free R-module of finite
++ rank), then the same is true for the associated Lie algebra.
AssociatedLieAlgebra(R,A) : SIG == CODE where
R : CommutativeRing
A : NonAssociativeAlgebra R
SIG ==> Join (NonAssociativeAlgebra R, CoercibleTo A) with
coerce : A -> %
++ coerce(a) coerces the element \spad{a} of the algebra \spad{A}
++ to an element of the Lie
++ algebra \spadtype{AssociatedLieAlgebra}(R,A).
if A has FramedNonAssociativeAlgebra(R) then
FramedNonAssociativeAlgebra(R)
if A has FiniteRankNonAssociativeAlgebra(R) then
FiniteRankNonAssociativeAlgebra(R)
CODE ==> A add
Rep := A
(a:%) * (b:%) == (a::Rep) * $Rep (b::Rep) -$Rep (b::Rep) * $Rep (a::Rep)
coerce(a:%):A == a :: Rep
coerce(a:A):% == a :: %
(a:%) ** (n:PositiveInteger) ==
n = 1 => a
0
|