aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/lie.spad.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/algebra/lie.spad.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/algebra/lie.spad.pamphlet')
-rw-r--r--src/algebra/lie.spad.pamphlet259
1 files changed, 259 insertions, 0 deletions
diff --git a/src/algebra/lie.spad.pamphlet b/src/algebra/lie.spad.pamphlet
new file mode 100644
index 00000000..c5822d71
--- /dev/null
+++ b/src/algebra/lie.spad.pamphlet
@@ -0,0 +1,259 @@
+\documentclass{article}
+\usepackage{axiom}
+\begin{document}
+\title{\$SPAD/src/algebra lie.spad}
+\author{Johannes Grabmeier}
+\maketitle
+\begin{abstract}
+\end{abstract}
+\eject
+\tableofcontents
+\eject
+\section{domain LIE AssociatedLieAlgebra}
+<<domain LIE AssociatedLieAlgebra>>=
+)abbrev domain LIE AssociatedLieAlgebra
+++ Author: J. Grabmeier
+++ Date Created: 07 March 1991
+++ Date Last Updated: 14 June 1991
+++ Basic Operations: *,**,+,-
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords: associated Liealgebra
+++ References:
+++ 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)} (i.e. 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)} (i.e. 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:CommutativeRing,A:NonAssociativeAlgebra R):
+ public == private where
+ public ==> 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)
+
+ private ==> 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
+
+@
+\section{domain JORDAN AssociatedJordanAlgebra}
+<<domain JORDAN AssociatedJordanAlgebra>>=
+)abbrev domain JORDAN AssociatedJordanAlgebra
+++ Author: J. Grabmeier
+++ Date Created: 14 June 1991
+++ Date Last Updated: 14 June 1991
+++ Basic Operations: *,**,+,-
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords: associated Jordan algebra
+++ References:
+++ Description:
+++ AssociatedJordanAlgebra takes an algebra \spad{A} and uses \spadfun{*$A}
+++ to define the new multiplications \spad{a*b := (a *$A b + b *$A a)/2}
+++ (anticommutator).
+++ The usual notation \spad{{a,b}_+} cannot be used due to
+++ restrictions in the current language.
+++ This domain only gives a Jordan algebra if the
+++ Jordan-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
+++ \spadfun{jordanAdmissible?()$A}.
+++
+++ If the underlying algebra is of type
+++ \spadtype{FramedNonAssociativeAlgebra(R)} (i.e. a non
+++ associative algebra over R which is a free R-module of finite
+++ rank, together with a fixed R-module basis), then the same
+++ is true for the associated Jordan algebra.
+++ Moreover, if the underlying algebra is of type
+++ \spadtype{FiniteRankNonAssociativeAlgebra(R)} (i.e. a non
+++ associative algebra over R which is a free R-module of finite
+++ rank), then the same true for the associated Jordan algebra.
+
+AssociatedJordanAlgebra(R:CommutativeRing,A:NonAssociativeAlgebra R):
+ public == private where
+ public ==> 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 Jordan algebra
+ ++ \spadtype{AssociatedJordanAlgebra}(R,A).
+ if A has FramedNonAssociativeAlgebra(R) then _
+ FramedNonAssociativeAlgebra(R)
+ if A has FiniteRankNonAssociativeAlgebra(R) then _
+ FiniteRankNonAssociativeAlgebra(R)
+
+ private ==> A add
+ Rep := A
+ two : R := (1$R + 1$R)
+ oneHalf : R := (recip two) :: R
+ (a:%) * (b:%) ==
+ zero? two => error
+ "constructor must no be called with Ring of characteristic 2"
+ ((a::Rep) * $Rep (b::Rep) +$Rep (b::Rep) * $Rep (a::Rep)) * oneHalf
+ -- (a::Rep) * $Rep (b::Rep) +$Rep (b::Rep) * $Rep (a::Rep)
+ coerce(a:%):A == a :: Rep
+ coerce(a:A):% == a :: %
+ (a:%) ** (n:PositiveInteger) == a
+
+@
+\section{domain LSQM LieSquareMatrix}
+<<domain LSQM LieSquareMatrix>>=
+)abbrev domain LSQM LieSquareMatrix
+++ Author: J. Grabmeier
+++ Date Created: 07 March 1991
+++ Date Last Updated: 08 March 1991
+++ Basic Operations:
+++ Related Constructors:
+++ Also See:
+++ AMS Classifications:
+++ Keywords:
+++ References:
+++ Description:
+++ LieSquareMatrix(n,R) implements the Lie algebra of the n by n
+++ matrices over the commutative ring R.
+++ The Lie bracket (commutator) of the algebra is given by
+++ \spad{a*b := (a *$SQMATRIX(n,R) b - b *$SQMATRIX(n,R) a)},
+++ where \spadfun{*$SQMATRIX(n,R)} is the usual matrix multiplication.
+LieSquareMatrix(n,R): Exports == Implementation where
+
+ n : PositiveInteger
+ R : CommutativeRing
+
+ Row ==> DirectProduct(n,R)
+ Col ==> DirectProduct(n,R)
+
+ Exports ==> Join(SquareMatrixCategory(n,R,Row,Col), CoercibleTo Matrix R,_
+ FramedNonAssociativeAlgebra R) --with
+
+ Implementation ==> AssociatedLieAlgebra (R,SquareMatrix(n, R)) add
+
+ Rep := AssociatedLieAlgebra (R,SquareMatrix(n, R))
+ -- local functions
+ n2 : PositiveInteger := n*n
+
+ convDM : DirectProduct(n2,R) -> %
+ conv : DirectProduct(n2,R) -> SquareMatrix(n,R)
+ --++ converts n2-vector to (n,n)-matrix row by row
+ conv v ==
+ cond : Matrix(R) := new(n,n,0$R)$Matrix(R)
+ z : Integer := 0
+ for i in 1..n repeat
+ for j in 1..n repeat
+ z := z+1
+ setelt(cond,i,j,v.z)
+ squareMatrix(cond)$SquareMatrix(n, R)
+
+
+ coordinates(a:%,b:Vector(%)):Vector(R) ==
+ -- only valid for b canonicalBasis
+ res : Vector R := new(n2,0$R)
+ z : Integer := 0
+ for i in 1..n repeat
+ for j in 1..n repeat
+ z := z+1
+ res.z := elt(a,i,j)$%
+ res
+
+
+ convDM v ==
+ sq := conv v
+ coerce(sq)$Rep :: %
+
+ basis() ==
+ n2 : PositiveInteger := n*n
+ ldp : List DirectProduct(n2,R) :=
+ [unitVector(i::PositiveInteger)$DirectProduct(n2,R) for i in 1..n2]
+ res:Vector % := vector map(convDM,_
+ ldp)$ListFunctions2(DirectProduct(n2,R), %)
+
+ someBasis() == basis()
+ rank() == n*n
+
+
+-- transpose: % -> %
+-- ++ computes the transpose of a matrix
+-- squareMatrix: Matrix R -> %
+-- ++ converts a Matrix to a LieSquareMatrix
+-- coerce: % -> Matrix R
+-- ++ converts a LieSquareMatrix to a Matrix
+-- symdecomp : % -> Record(sym:%,antisym:%)
+-- if R has commutative("*") then
+-- minorsVect: -> Vector(Union(R,"uncomputed")) --range: 1..2**n-1
+-- if R has commutative("*") then central
+-- if R has commutative("*") and R has unitsKnown then unitsKnown
+
+@
+\section{License}
+<<license>>=
+--Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
+--All rights reserved.
+--
+--Redistribution and use in source and binary forms, with or without
+--modification, are permitted provided that the following conditions are
+--met:
+--
+-- - Redistributions of source code must retain the above copyright
+-- notice, this list of conditions and the following disclaimer.
+--
+-- - Redistributions in binary form must reproduce the above copyright
+-- notice, this list of conditions and the following disclaimer in
+-- the documentation and/or other materials provided with the
+-- distribution.
+--
+-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the
+-- names of its contributors may be used to endorse or promote products
+-- derived from this software without specific prior written permission.
+--
+--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.
+@
+<<*>>=
+<<license>>
+
+<<domain LIE AssociatedLieAlgebra>>
+<<domain JORDAN AssociatedJordanAlgebra>>
+<<domain LSQM LieSquareMatrix>>
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}