diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index c507d41..27d1d8a 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -427,98 +427,1702 @@ AffineSpace(dim,K):Exports == Implementation where
)set message auto off
)clear all
---S 1 of 1
-)show AlgebraGivenByStructuralConstants
+\end{chunk}
+\subsection{Some examples of algebras in genetics}
+Literature:
+[WB] A. Woerz-Busekros: Algebras in Genetics, LNB 36,
+Springer-Verlag, Berlin etc. 1980.
+
+Reed, Mary Lynn, "Algebraic Structure of Genetic Inheritance"
+Bulletin of the American Mathematical Society, 1997, pp 107-130
+
+Gonshor, H., "Contributions to Genetic Algebras"
+Proc. Edinburgh Mathmatical Society (Series 2), vol 17, no 4,
+1971, pp 289--298
+
+\subsection{Commutative, non-associative algebras}
+A Gonshor genetic algebra ([WB], p. 41-42) of dimension 4:
+
+The coefficient ring:
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 1 of 98
+R := FRAC POLY INT
--R
---R AlgebraGivenByStructuralConstants(R: Field,n: PositiveInteger,ls: List(Symbol),gamma: Vector(Matrix(R))) is a domain constructor
---R Abbreviation for AlgebraGivenByStructuralConstants is ALGSC
---R This constructor is exposed in this frame.
---R Issue )edit bookvol10.3.pamphlet to see algebra source code for ALGSC
---R
---R------------------------------- Operations --------------------------------
---R ?*? : (SquareMatrix(n,R),%) -> % ?*? : (R,%) -> %
---R ?*? : (%,R) -> % ?*? : (%,%) -> %
---R ?*? : (Integer,%) -> % ?*? : (PositiveInteger,%) -> %
---R ?**? : (%,PositiveInteger) -> % ?+? : (%,%) -> %
---R ?-? : (%,%) -> % -? : % -> %
---R ?=? : (%,%) -> Boolean 0 : () -> %
---R alternative? : () -> Boolean antiAssociative? : () -> Boolean
---R antiCommutative? : () -> Boolean antiCommutator : (%,%) -> %
---R apply : (Matrix(R),%) -> % associative? : () -> Boolean
---R associator : (%,%,%) -> % basis : () -> Vector(%)
---R coerce : Vector(R) -> % coerce : % -> OutputForm
---R commutative? : () -> Boolean commutator : (%,%) -> %
---R convert : Vector(R) -> % convert : % -> Vector(R)
---R coordinates : % -> Vector(R) ?.? : (%,Integer) -> R
---R flexible? : () -> Boolean hash : % -> SingleInteger
---R jacobiIdentity? : () -> Boolean jordanAdmissible? : () -> Boolean
---R jordanAlgebra? : () -> Boolean latex : % -> String
---R leftAlternative? : () -> Boolean leftDiscriminant : () -> R
---R leftDiscriminant : Vector(%) -> R leftNorm : % -> R
---R leftTrace : % -> R leftTraceMatrix : () -> Matrix(R)
---R lieAdmissible? : () -> Boolean lieAlgebra? : () -> Boolean
---R powerAssociative? : () -> Boolean rank : () -> PositiveInteger
---R represents : Vector(R) -> % rightAlternative? : () -> Boolean
---R rightDiscriminant : () -> R rightNorm : % -> R
---R rightTrace : % -> R rightTraceMatrix : () -> Matrix(R)
---R sample : () -> % someBasis : () -> Vector(%)
---R zero? : % -> Boolean ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R associatorDependence : () -> List(Vector(R)) if R has INTDOM
---R conditionsForIdempotents : () -> List(Polynomial(R))
---R conditionsForIdempotents : Vector(%) -> List(Polynomial(R))
---R coordinates : Vector(%) -> Matrix(R)
---R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
---R coordinates : (%,Vector(%)) -> Vector(R)
---R leftCharacteristicPolynomial : % -> SparseUnivariatePolynomial(R)
---R leftMinimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has INTDOM
---R leftPower : (%,PositiveInteger) -> %
---R leftRankPolynomial : () -> SparseUnivariatePolynomial(Polynomial(R)) if R has FIELD
---R leftRecip : % -> Union(%,"failed") if R has INTDOM
---R leftRegularRepresentation : % -> Matrix(R)
---R leftRegularRepresentation : (%,Vector(%)) -> Matrix(R)
---R leftTraceMatrix : Vector(%) -> Matrix(R)
---R leftUnit : () -> Union(%,"failed") if R has INTDOM
---R leftUnits : () -> Union(Record(particular: %,basis: List(%)),"failed") if R has INTDOM
---R noncommutativeJordanAlgebra? : () -> Boolean
---R plenaryPower : (%,PositiveInteger) -> %
---R recip : % -> Union(%,"failed") if R has INTDOM
---R represents : (Vector(R),Vector(%)) -> %
---R rightCharacteristicPolynomial : % -> SparseUnivariatePolynomial(R)
---R rightDiscriminant : Vector(%) -> R
---R rightMinimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has INTDOM
---R rightPower : (%,PositiveInteger) -> %
---R rightRankPolynomial : () -> SparseUnivariatePolynomial(Polynomial(R)) if R has FIELD
---R rightRecip : % -> Union(%,"failed") if R has INTDOM
---R rightRegularRepresentation : % -> Matrix(R)
---R rightRegularRepresentation : (%,Vector(%)) -> Matrix(R)
---R rightTraceMatrix : Vector(%) -> Matrix(R)
---R rightUnit : () -> Union(%,"failed") if R has INTDOM
---R rightUnits : () -> Union(Record(particular: %,basis: List(%)),"failed") if R has INTDOM
---R structuralConstants : () -> Vector(Matrix(R))
---R structuralConstants : Vector(%) -> Vector(Matrix(R))
---R subtractIfCan : (%,%) -> Union(%,"failed")
---R unit : () -> Union(%,"failed") if R has INTDOM
--R
+--R (1) Fraction(Polynomial(Integer))
+--R Type: Domain
--E 1
-)spool
-)lisp (bye)
\end{chunk}
-\begin{chunk}{AlgebraGivenByStructuralConstants.help}
-====================================================================
-AlgebraGivenByStructuralConstants examples
-====================================================================
+The following multiplication constants may be chosen arbitrarily
+(notice that we write ckij for $c_(i,j)^k$):
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 2 of 98
+(c100, c101, _
+c200, c201, c202, c211, _
+c300, c301, c302, c303, c311, c312, c322) : R
+--R
+--R Type: Void
+--E 2
-AlgebraGivenByStructuralConstants implements finite rank algebras
-over a commutative ring, given by the structural constants gamma
-with respect to a fixed basis [a1,..,an], where gamma is an n-vector
-of n by n matrices [(gammaijk) for k in 1..rank()] defined by
- ai * aj = gammaij1 * a1 + ... + gammaijn * an
-The symbols for the fixed basis have to be given as a list of symbols.
+--S 3 of 98
+c100 := 1 ; c101 := -1 ;
+--R
+--R
+--R Type: Fraction(Polynomial(Integer))
+--E 3
+
+--S 4 of 98
+c200 := 0 ; c201 := 1 ; c202 := -1 ;
+ c211 := 2 ;
+--R
+--R
+--R Type: Fraction(Polynomial(Integer))
+--E 4
+
+--S 5 of 98
+c300 := 1 ; c301 := 0 ; c302 := -1 ; c303 := 1 ;
+ c311 := 1 ; c312 := 0 ;
+ c322 := 2 ;
+--R
+--R
+--R Type: Fraction(Polynomial(Integer))
+--E 5
+
+\end{chunk}
+The matrices of the multiplication constants:
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 6 of 98
+gonshor : List SquareMatrix(4,R) :=
+ [matrix [ [1, 0, 0, 0], [0, 0, 0, 0],_
+ [0, 0, 0, 0], [0, 0, 0, 0] ],_
+ matrix [ [c100, c101, 0, 0], [c101, 0, 0, 0],_
+ [0, 0, 0, 0], [0, 0, 0, 0] ],_
+ matrix [ [c200, c201, c202, 0], [c201, c211, 0, 0],_
+ [c202, 0, 0, 0], [0, 0, 0, 0] ],_
+ matrix [ [c300, c301, c302, c303], [c301, c311, c312, 0],_
+ [c302, c312, c322, 0], [c303, 0, 0, 0] ] ] ;
+--R
+--R
+--R Type: List(SquareMatrix(4,Fraction(Polynomial(Integer))))
+--E 6
+
+--S 7 of 98
+basisSymbols : List Symbol := [subscript(e,[i]) for i in 0..3]
+--R
+--R
+--R (7) [e ,e ,e ,e ]
+--R 0 1 2 3
+--R Type: List(Symbol)
+--E 7
+
+--S 8 of 98
+GonshorGenetic := ALGSC(R, 4, basisSymbols, gonshor)
+--R
+--R
+--R (8)
+--R AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e
+--R 1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--R Type: Domain
+--E 8
+
+--S 9 of 98
+commutative?()$GonshorGenetic
+--R
+--R algebra is commutative
+--R
+--R (9) true
+--R Type: Boolean
+--E 9
+
+--S 10 of 98
+associative?()$GonshorGenetic
+--R
+--R algebra is not associative
+--R
+--R (10) false
+--R Type: Boolean
+--E 10
+
+\end{chunk}
+The canonical basis:
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 11 of 98
+e0 : GonshorGenetic := [1, 0, 0, 0] :: Vector R ;
+--R
+--R
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 11
+
+--S 12 of 98
+e1 : GonshorGenetic := [0, 1, 0, 0] :: Vector R ;
+--R
+--R
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 12
+
+--S 13 of 98
+e2 : GonshorGenetic := [0, 0, 1, 0] :: Vector R ;
+--R
+--R
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 13
+
+--S 14 of 98
+e3 : GonshorGenetic := [0, 0, 0, 1] :: Vector R ;
+--R
+--R
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 14
+
+\end{chunk}
+A generic element of the algebra:
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 15 of 98
+x : GonshorGenetic := x0*e0 + x1*e1 + x2*e2 + x3*e3
+--R
+--R
+--R (15) x3 e + x2 e + x1 e + x0 e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 15
+
+\end{chunk}
+The matrix of the left multiplication with x :
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 16 of 98
+Lx := leftRegularRepresentation x
+--R
+--R
+--R +x0 - x1 + x0 - x2 + x1 x3 - x2 + x0+
+--R | |
+--R |0 - x0 2x1 + x0 x1 |
+--R (16) | |
+--R |0 0 - x0 2x2 - x0 |
+--R | |
+--R +0 0 0 x0 +
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 16
+
+\end{chunk}
+leftRegularRepresentationt 8 : GonshorGenetic -> R
+be the weight homomorphism
+defined by 8(e0) := 1 and 8(ei) := 0 for i = 1,2,3 .
+The coefficients of the characteristic polynomial
+of Lx depend only on 8(x) = x0 :
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 17 of 98
+p := characteristicPolynomial(Lx,Y)
+--R
+--R
+--R 4 2 2 4
+--R (17) x0 - 2Y x0 + Y
+--R Type: Polynomial(Integer)
+--E 17
+
+\end{chunk}
+The left minimal polynomial of x divides Y * p(Y) :
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 18 of 98
+leftMinimalPolynomial x
+--R
+--R
+--R 5 2 3 4
+--R (18) ? - 2x0 ? + x0 ?
+--R Type: SparseUnivariatePolynomial(Fraction(Polynomial(Integer)))
+--E 18
+
+)clear prop A a b c r s
+
+--S 19 of 98
+A := GonshorGenetic
+--R
+--R
+--R (19)
+--R AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e
+--R 1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--R Type: Domain
+--E 19
+
+--S 20 of 98
+a := x
+--R
+--R
+--R (20) x3 e + x2 e + x1 e + x0 e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 20
+
+--S 21 of 98
+b := (1/4)*e1 + (1/5)*e2 + (3/20)*e3 + (2/5)*e0
+--R
+--R
+--R 3 1 1 2
+--R (21) -- e + - e + - e + - e
+--R 20 3 5 2 4 1 5 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 21
+
+--S 22 of 98
+c := (1/3)*e1 + (1/7)*e2 + (8/21)*e3 + (1/7)*e0
+--R
+--R
+--R 8 1 1 1
+--R (22) -- e + - e + - e + - e
+--R 21 3 7 2 3 1 7 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 22
+
+--S 23 of 98
+r : R := r
+--R
+--R
+--R (23) r
+--R Type: Fraction(Polynomial(Integer))
+--E 23
+
+--S 24 of 98
+s : R := s
+--R
+--R
+--R (24) s
+--R Type: Fraction(Polynomial(Integer))
+--E 24
+
+--S 25 of 98
+b*c
+--R
+--R
+--R 2 1 47 2
+--R (25) - e + - e - --- e + -- e
+--R 7 3 4 2 420 1 35 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 25
+
+--S 26 of 98
+(b*c)*b
+--R
+--R
+--R 893 277 4 4
+--R (26) ---- e - ---- e + -- e + --- e
+--R 8400 3 1400 2 75 1 175 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 26
+
+--S 27 of 98
+b*(c*b)
+--R
+--R
+--R 893 277 4 4
+--R (27) ---- e - ---- e + -- e + --- e
+--R 8400 3 1400 2 75 1 175 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 27
+
+\end{chunk}
+A: Algebra
+a,b,c : A
+r,s : R
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+
+)clear prop AP
+--S 28 of 98
+AP := ALGPKG(R,A)
+--R
+--R
+--R (28)
+--R AlgebraPackage(Fraction(Polynomial(Integer)),AlgebraGivenByStructuralConstant
+--R s(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MA
+--R TRIX,MATRIX]))
+--R Type: Domain
+--E 28
+
+--S 29 of 98
+r*a
+--R
+--R
+--R (29) r x3 e + r x2 e + r x1 e + r x0 e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 29
+
+--S 30 of 98
+a*r
+--R
+--R
+--R (30) r x3 e + r x2 e + r x1 e + r x0 e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 30
+
+--S 31 of 98
+a*b
+--R
+--R
+--R 8x3 + 5x1 + 7x0 - 8x2 + 18x1 + x0 - 8x1 + 3x0 2x0
+--R (31) --------------- e + ----------------- e + ----------- e + --- e
+--R 20 3 20 2 20 1 5 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 31
+
+--S 32 of 98
+b*c
+--R
+--R
+--R 2 1 47 2
+--R (32) - e + - e - --- e + -- e
+--R 7 3 4 2 420 1 35 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 32
+
+--S 33 of 98
+12 * c
+--R
+--R
+--R 32 12 12
+--R (33) -- e + -- e + 4e + -- e
+--R 7 3 7 2 1 7 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 32
+
+--S 34 of 98
+(-3) * a
+--R
+--R
+--R (34) - 3x3 e - 3x2 e - 3x1 e - 3x0 e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 34
+
+--S 35 of 98
+d := a ** 12
+--R
+--R
+--R (35)
+--R 11 10 2 9 2 10 11 8 4
+--R 12x0 x3 + 4x0 x2 + (144x0 x1 + 144x0 x1 - 68x0 )x2 + 248x0 x1
+--R +
+--R 9 3 10 2 11 12
+--R - 784x0 x1 - 86x0 x1 + 204x0 x1 - 24x0
+--R *
+--R e
+--R 3
+--R +
+--R 11 10 2 11 11 12 12
+--R (4x0 x2 - 92x0 x1 + 28x0 x1)e + (4x0 x1 - x0 )e + x0 e
+--R 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 35
+
+--S 36 of 98
+-d
+--R
+--R
+--R (36)
+--R 11 10 2 9 2 10 11
+--R - 12x0 x3 - 4x0 x2 + (- 144x0 x1 - 144x0 x1 + 68x0 )x2
+--R +
+--R 8 4 9 3 10 2 11 12
+--R - 248x0 x1 + 784x0 x1 + 86x0 x1 - 204x0 x1 + 24x0
+--R *
+--R e
+--R 3
+--R +
+--R 11 10 2 11 11 12 12
+--R (- 4x0 x2 + 92x0 x1 - 28x0 x1)e + (- 4x0 x1 + x0 )e - x0 e
+--R 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 36
+
+--S 37 of 98
+a + b
+--R
+--R
+--R 20x3 + 3 5x2 + 1 4x1 + 1 5x0 + 2
+--R (37) -------- e + ------- e + ------- e + ------- e
+--R 20 3 5 2 4 1 5 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 37
+
+--S 38 of 98
+d-c
+--R
+--R
+--R (38)
+--R 11 10 2 9 2 10 11
+--R 252x0 x3 + 84x0 x2 + (3024x0 x1 + 3024x0 x1 - 1428x0 )x2
+--R +
+--R 8 4 9 3 10 2 11 12
+--R 5208x0 x1 - 16464x0 x1 - 1806x0 x1 + 4284x0 x1 - 504x0 - 8
+--R /
+--R 21
+--R *
+--R e
+--R 3
+--R +
+--R 11 10 2 11 11 12
+--R 28x0 x2 - 644x0 x1 + 196x0 x1 - 1 12x0 x1 - 3x0 - 1
+--R ------------------------------------- e + -------------------- e
+--R 7 2 3 1
+--R +
+--R 12
+--R 7x0 - 1
+--R --------- e
+--R 7 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 38
+
+--S 39 of 98
+(a*(a*a) = leftPower(a,3)) :: Boolean
+--R
+--R
+--R (39) true
+--R Type: Boolean
+--E 39
+
+--S 40 of 98
+(a ** 11 = (a**8 * a**2) * a) :: Boolean
+--R
+--R
+--R (40) true
+--R Type: Boolean
+--E 40
+
+--S 41 of 98
+(a ** 11 = a**8 * (a**2 * a)) :: Boolean
+--R
+--R
+--R (41) false
+--R Type: Boolean
+--E 41
+
+--S 42 of 98
+zero := 0$A
+--R
+--R
+--R (42) 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 42
+
+--S 43 of 98
+zero : A := 0
+--R
+--R
+--R (43) 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 43
+
+--S 44 of 98
+alternative?()$A
+--R
+--R algebra is not left alternative
+--R
+--R (44) false
+--R Type: Boolean
+--E 44
+
+--S 45 of 98
+antiCommutative?()$A
+--R
+--R algebra is not anti-commutative
+--R
+--R (45) false
+--R Type: Boolean
+--E 45
+
+--S 46 of 98
+associative?()$A
+--R
+--R algebra is not associative
+--R
+--R (46) false
+--R Type: Boolean
+--E 46
+
+--S 47 of 98
+commutative?()$A
+--R
+--R algebra is commutative
+--R
+--R (47) true
+--R Type: Boolean
+--E 47
+
+--S 48 of 98
+commutator(a,b)
+--R
+--R
+--R (48) 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 48
+
+--S 49 of 98
+antiCommutator(a,b)
+--R
+--R
+--R 8x3 + 5x1 + 7x0 - 8x2 + 18x1 + x0 - 8x1 + 3x0 4x0
+--R (49) --------------- e + ----------------- e + ----------- e + --- e
+--R 10 3 10 2 10 1 5 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 49
+
+--S 50 of 98
+associator(a,b,c)
+--R
+--R
+--R - 21x2 + 6x1 + 7x0 12x2 - 30x1 + 58x0 12x1 - 28x0
+--R (50) ------------------ e + ------------------ e + ----------- e
+--R 42 3 105 2 105 1
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 50
+
+--S 51 of 98
+basis()$A
+--R
+--R
+--R (51) [e ,e ,e ,e ]
+--R 0 1 2 3
+--RType: Vector(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 51
+
+--S 52 of 98
+n := rank()$A
+--R
+--R
+--R (52) 4
+--R Type: PositiveInteger
+--E 52
+
+--S 53 of 98
+v : Vector R := [i for i in 1..n]
+--R
+--R
+--R (53) [1,2,3,4]
+--R Type: Vector(Fraction(Polynomial(Integer)))
+--E 53
+
+--S 54 of 98
+g : A := represents v
+--R
+--R
+--R (54) 4e + 3e + 2e + e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 54
+
+--S 55 of 98
+coordinates a
+--R
+--R
+--R (55) [x0,x1,x2,x3]
+--R Type: Vector(Fraction(Polynomial(Integer)))
+--E 55
+
+--S 56 of 98
+coordinates [a,b]
+--R
+--R
+--R +x0 x1 x2 x3+
+--R | |
+--R (56) |2 1 1 3|
+--R |- - - --|
+--R +5 4 5 20+
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 56
+
+--S 57 of 98
+a.3
+--R
+--R
+--R (57) x2
+--R Type: Fraction(Polynomial(Integer))
+--E 57
+
+--S 58 of 98
+flexible?()$A
+--R
+--R algebra is flexible
+--R
+--R (58) true
+--R Type: Boolean
+--E 58
+
+--S 59 of 98
+leftAlternative?()$A
+--R
+--R algebra is not left alternative
+--R
+--R (59) false
+--R Type: Boolean
+--E 59
+
+--S 60 of 98
+rightAlternative?()$A
+--R
+--R algebra is not right alternative
+--R
+--R (60) false
+--R Type: Boolean
+--E 60
+
+--S 61 of 98
+sB := someBasis()$A
+--R
+--R
+--R (61) [e ,e ,e ,e ]
+--R 0 1 2 3
+--RType: Vector(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 61
+
+--S 62 of 98
+zero? a
+--R
+--R
+--R (62) false
+--R Type: Boolean
+--E 62
+
+--S 63 of 98
+associatorDependence()$A
+--R
+--R
+--R (63) [[1,1,1,0,0,0],[0,1,0,1,0,0],[1,0,0,0,1,0],[- 1,- 1,0,0,0,1]]
+--R Type: List(Vector(Fraction(Polynomial(Integer))))
+--E 63
+
+\end{chunk}
+ConditionsForIdempotents()\$A
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 64 of 98
+jacobiIdentity?()$A
+--R
+--R Jacobi identity does not hold
+--R
+--R (64) false
+--R Type: Boolean
+--E 64
+
+--S 65 of 98
+jordanAlgebra?()$A
+--R
+--R algebra is commutative
+--R this is not a Jordan algebra
+--R
+--R (65) false
+--R Type: Boolean
+--E 65
+
+--S 66 of 98
+jordanAdmissible?()$A
+--R
+--R algebra is not Jordan admissible
+--R
+--R (66) false
+--R Type: Boolean
+--E 66
+
+--S 67 of 98
+lieAdmissible?()$A
+--R
+--R algebra is Lie admissible
+--R
+--R (67) true
+--R Type: Boolean
+--E 67
+
+\end{chunk}
+ConditionsForIdempotents
+\begin{chunk}{AlgebraGivenByStructuralConstants.input}
+--S 68 of 98
+b2 := [reduce(+,[sB.i for i in 1..k]) for k in 1..n]
+--R
+--R
+--R (68) [e ,e + e ,e + e + e ,e + e + e + e ]
+--R 0 1 0 2 1 0 3 2 1 0
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 68
+
+--S 69 of 98
+coordinates (a ,b2 :: Vector A)
+--R
+--R
+--R (69) [- x1 + x0,- x2 + x1,- x3 + x2,x3]
+--R Type: Vector(Fraction(Polynomial(Integer)))
+--E 69
+
+--S 70 of 98
+coordinates ([a,b] ,bb := (b2 :: Vector A))
+--R
+--R
+--R +- x1 + x0 - x2 + x1 - x3 + x2 x3+
+--R | |
+--R (70) | 3 1 1 3|
+--R | -- -- -- --|
+--R + 20 20 20 20+
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 70
+
+--S 71 of 98
+leftMinimalPolynomial a
+--R
+--R
+--R 5 2 3 4
+--R (71) ? - 2x0 ? + x0 ?
+--R Type: SparseUnivariatePolynomial(Fraction(Polynomial(Integer)))
+--E 71
+
+--S 72 of 98
+leftPower (a,10)
+--R
+--R
+--R (72)
+--R 9 8 2 7 2 8 9 8 2 10
+--R (10x0 x3 - 6x0 x2 + (- 32x0 x1 + 8x0 x1 + 2x0 )x2 + 13x0 x1 + 5x0 )e
+--R 3
+--R +
+--R 9 8 2 9 10 9 10 10
+--R (- 2x0 x2 + 26x0 x1 + 6x0 x1 - 4x0 )e + (- 2x0 x1 + x0 )e + x0 e
+--R 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 72
+
+--S 73 of 98
+rightPower(a,10)
+--R
+--R
+--R (73)
+--R 9 8 2 7 2 8 9 8 2 10
+--R (10x0 x3 - 6x0 x2 + (- 32x0 x1 + 8x0 x1 + 2x0 )x2 + 13x0 x1 + 5x0 )e
+--R 3
+--R +
+--R 9 8 2 9 10 9 10 10
+--R (- 2x0 x2 + 26x0 x1 + 6x0 x1 - 4x0 )e + (- 2x0 x1 + x0 )e + x0 e
+--R 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 73
+
+--S 74 of 98
+leftRegularRepresentation a
+--R
+--R
+--R +x0 - x1 + x0 - x2 + x1 x3 - x2 + x0+
+--R | |
+--R |0 - x0 2x1 + x0 x1 |
+--R (74) | |
+--R |0 0 - x0 2x2 - x0 |
+--R | |
+--R +0 0 0 x0 +
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 74
+
+--S 75 of 98
+leftRegularRepresentation (a,bb)
+--R
+--R
+--R + x1 x2 - 2x1 + x0 - x3 + x1 - x0 x3 - x2 + x0 +
+--R | |
+--R |x1 + x0 x2 - 4x1 - x0 - x3 + 2x1 x3 - x2 + x1 + x0|
+--R (75) | |
+--R |x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 x3 + x2 + x1 |
+--R | |
+--R +x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 - x0 x3 + x2 + x1 + x0+
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 75
+
+--S 76 of 98
+leftUnit()$A
+--R
+--R this algebra has no left unit
+--R
+--R (76) "failed"
+--R Type: Union("failed",...)
+--E 76
+
+--S 77 of 98
+represents (v,bb)
+--R
+--R
+--R (77) 4e + 7e + 9e + 10e
+--R 3 2 1 0
+--RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+--E 77
+
+--S 78 of 98
+rightMinimalPolynomial a
+--R
+--R
+--R 5 2 3 4
+--R (78) ? - 2x0 ? + x0 ?
+--R Type: SparseUnivariatePolynomial(Fraction(Polynomial(Integer)))
+--E 78
+
+--S 79 of 98
+rightRegularRepresentation a
+--R
+--R
+--R +x0 - x1 + x0 - x2 + x1 x3 - x2 + x0+
+--R | |
+--R |0 - x0 2x1 + x0 x1 |
+--R (79) | |
+--R |0 0 - x0 2x2 - x0 |
+--R | |
+--R +0 0 0 x0 +
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 79
+
+--S 80 of 98
+rightRegularRepresentation (a,bb)
+--R
+--R
+--R + x1 x2 - 2x1 + x0 - x3 + x1 - x0 x3 - x2 + x0 +
+--R | |
+--R |x1 + x0 x2 - 4x1 - x0 - x3 + 2x1 x3 - x2 + x1 + x0|
+--R (80) | |
+--R |x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 x3 + x2 + x1 |
+--R | |
+--R +x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 - x0 x3 + x2 + x1 + x0+
+--R Type: Matrix(Fraction(Polynomial(Integer)))
+--E 80
+
+--S 81 of 98
+rightUnit()$A
+--R
+--R this algebra has no right unit
+--R
+--R (81) "failed"
+--R Type: Union("failed",...)
+--E 81
+
+--S 82 of 98
+structuralConstants()$A
+--R
+--R
+--R +1 0 0 0+ + 1 - 1 0 0+ + 0 1 - 1 0+ + 1 0 - 1 1+
+--R | | | | | | | |
+--R |0 0 0 0| |- 1 0 0 0| | 1 2 0 0| | 0 1 0 0|
+--R (82) [| |,| |,| |,| |]
+--R |0 0 0 0| | 0 0 0 0| |- 1 0 0 0| |- 1 0 2 0|
+--R | | | | | | | |
+--R +0 0 0 0+ + 0 0 0 0+ + 0 0 0 0+ + 1 0 0 0+
+--R Type: Vector(Matrix(Fraction(Polynomial(Integer))))
+--E 82
+
+--S 83 of 98
+structuralConstants(bb)
+--R
+--R
+--R +0 1 1 1+ + 1 - 1 0 0 + +- 1 0 0 - 1+ +1 1 0 1+
+--R | | | | | | | |
+--R |1 2 2 2| |- 1 - 5 - 4 - 4| | 0 2 2 1 | |1 2 1 2|
+--R (83) [| |,| |,| |,| |]
+--R |1 2 2 2| | 0 - 4 - 3 - 3| | 0 2 0 - 1| |0 1 2 3|
+--R | | | | | | | |
+--R +1 2 2 2+ + 0 - 4 - 3 - 3+ +- 1 1 - 1 - 2+ +1 2 3 4+
+--R Type: Vector(Matrix(Fraction(Polynomial(Integer))))
+--E 83
+
+--S 84 of 98
+unit()$A
+--R
+--R this algebra has no unit
+--R
+--R (84) "failed"
+--R Type: Union("failed",...)
+--E 84
+
+--S 85 of 98
+biRank a
+--R
+--R
+--R (85) 4
+--R Type: PositiveInteger
+--E 85
+
+--S 86 of 98
+leftRank a
+--R
+--R
+--R (86) 4
+--R Type: PositiveInteger
+--E 86
+
+--S 87 of 98
+doubleRank a
+--R
+--R
+--R (87) 4
+--R Type: PositiveInteger
+--E 87
+
+--S 88 of 98
+rightRank a
+--R
+--R
+--R (88) 4
+--R Type: PositiveInteger
+--E 88
+
+--S 89 of 98
+weakBiRank a
+--R
+--R
+--R (89) 4
+--R Type: PositiveInteger
+--E 89
+
+--S 90 of 98
+basisOfCenter()$AP
+--R
+--R
+--R (90) [e ]
+--R 3
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 90
+
+--S 91 of 98
+basisOfLeftNucleus()$AP
+--R
+--R
+--R (91) [e ]
+--R 3
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 91
+
+--S 92 of 98
+basisOfNucleus()$AP
+--R
+--R
+--R (92) [e ]
+--R 3
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 92
+
+--S 93 of 98
+basisOfRightNucleus()$AP
+--R
+--R
+--R (93) [e ]
+--R 3
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 93
+
+--S 94 of 98
+basisOfCentroid()$AP
+--R
+--R
+--R +0 0 0 0+ +1 0 0 0+
+--R | | | |
+--R |0 0 0 0| |0 1 0 0|
+--R (94) [| |,| |]
+--R |0 0 0 0| |0 0 1 0|
+--R | | | |
+--R +1 0 0 0+ +0 0 0 1+
+--R Type: List(Matrix(Fraction(Polynomial(Integer))))
+--E 94
+
+--S 95 of 98
+basisOfCommutingElements()$AP
+--R
+--R
+--R (95) [e ,e ,e ,e ]
+--R 3 2 1 0
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 95
+
+--S 96 of 98
+basisOfLeftNucloid()$AP
+--R
+--R
+--R +0 0 0 0+ +1 0 0 0+
+--R | | | |
+--R |0 0 0 0| |0 1 0 0|
+--R (96) [| |,| |]
+--R |0 0 0 0| |0 0 1 0|
+--R | | | |
+--R +1 0 0 0+ +0 0 0 1+
+--R Type: List(Matrix(Fraction(Polynomial(Integer))))
+--E 96
+
+--S 97 of 98
+basisOfMiddleNucleus()$AP
+--R
+--R
+--R (97) [e ]
+--R 3
+--RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
+--E 97
+
+--S 98 of 98
+basisOfRightNucloid()$AP
+--R
+--R
+--R +0 0 0 0+ +1 0 0 0+
+--R | | | |
+--R |0 0 0 0| |0 1 0 0|
+--R (98) [| |,| |]
+--R |0 0 0 0| |0 0 1 0|
+--R | | | |
+--R +1 0 0 0+ +0 0 0 1+
+--R Type: List(Matrix(Fraction(Polynomial(Integer))))
+--E 98
+
+)spool
+)lisp (bye)
+\end{chunk}
+\begin{chunk}{AlgebraGivenByStructuralConstants.help}
+====================================================================
+AlgebraGivenByStructuralConstants examples
+====================================================================
+
+AlgebraGivenByStructuralConstants implements finite rank algebras
+over a commutative ring, given by the structural constants gamma
+with respect to a fixed basis [a1,..,an], where gamma is an n-vector
+of n by n matrices [(gammaijk) for k in 1..rank()] defined by
+ ai * aj = gammaij1 * a1 + ... + gammaijn * an
+The symbols for the fixed basis have to be given as a list of symbols.
+
+SOME EXAMPLES OF ALGEBRAS IN GENETICS
+
+[WB] A. Woerz-Busekros: Algebras in Genetics, LNB 36,
+Springer-Verlag, Berlin etc. 1980.
+
+Reed, Mary Lynn, "Algebraic Structure of Genetic Inheritance"
+Bulletin of the American Mathematical Society, 1997, pp 107-130
+
+Gonshor, H., "Contributions to Genetic Algebras"
+Proc. Edinburgh Mathmatical Society (Series 2), vol 17, no 4,
+1971, pp 289--298
+
+
+A Gonshor genetic algebra ([WB], p. 41-42) of dimension 4:
+
+The coefficient ring:
+
+ R := FRAC POLY INT
+
+The following multiplication constants may be chosen arbitrarily
+(notice that we write ckij for $c_(i,j)^k$):
+
+ (c100, c101, _
+ c200, c201, c202, c211, _
+ c300, c301, c302, c303, c311, c312, c322) : R
+
+ c100 := 1
+ c101 := -1
+
+ c200 := 0
+ c201 := 1
+ c202 := -1
+ c211 := 2
+
+ c300 := 1
+ c301 := 0
+ c302 := -1
+ c303 := 1
+ c311 := 1
+ c312 := 0
+ c322 := 2
+
+The matrices of the multiplication constants:
+
+ gonshor : List SquareMatrix(4,R) :=
+ [matrix [ [1, 0, 0, 0], [0, 0, 0, 0],_
+ [0, 0, 0, 0], [0, 0, 0, 0] ],_
+ matrix [ [c100, c101, 0, 0], [c101, 0, 0, 0],_
+ [0, 0, 0, 0], [0, 0, 0, 0] ],_
+ matrix [ [c200, c201, c202, 0], [c201, c211, 0, 0],_
+ [c202, 0, 0, 0], [0, 0, 0, 0] ],_
+ matrix [ [c300, c301, c302, c303], [c301, c311, c312, 0],_
+ [c302, c312, c322, 0], [c303, 0, 0, 0] ] ] ;
+
+ basisSymbols : List Symbol := [subscript(e,[i]) for i in 0..3]
+
+ [e ,e ,e ,e ]
+ 0 1 2 3
+
+ GonshorGenetic := ALGSC(R, 4, basisSymbols, gonshor)
+
+ 1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
+
+
+ commutative?()$GonshorGenetic
+ algebra is commutative
+
+
+ associative?()$GonshorGenetic
+ algebra is not associative
+
+
+The canonical basis:
+
+ e0 : GonshorGenetic := [1, 0, 0, 0] :: Vector R ;
+ e1 : GonshorGenetic := [0, 1, 0, 0] :: Vector R ;
+ e2 : GonshorGenetic := [0, 0, 1, 0] :: Vector R ;
+ e3 : GonshorGenetic := [0, 0, 0, 1] :: Vector R ;
+
+A generic element of the algebra:
+
+ x : GonshorGenetic := x0*e0 + x1*e1 + x2*e2 + x3*e3
+
+ x3 e + x2 e + x1 e + x0 e
+ 3 2 1 0
+
+The matrix of the left multiplication with x :
+
+ Lx := leftRegularRepresentation x
+
+ +x0 - x1 + x0 - x2 + x1 x3 - x2 + x0+
+ | |
+ |0 - x0 2x1 + x0 x1 |
+ | |
+ |0 0 - x0 2x2 - x0 |
+ | |
+ +0 0 0 x0 +
+
+
+
+leftRegularRepresentationt 8 : GonshorGenetic -> R be the weight
+homomorphism defined by 8(e0) := 1 and 8(ei) := 0 for i = 1,2,3 .
+The coefficients of the characteristic polynomial
+of Lx depend only on 8(x) = x0 :
+
+ p := characteristicPolynomial(Lx,Y)
+
+ 4 2 2 4
+ x0 - 2Y x0 + Y
+
+
+The left minimal polynomial of x divides Y * p(Y) :
+
+ leftMinimalPolynomial x
+
+ 5 2 3 4
+ ? - 2x0 ? + x0 ?
+
+
+ A := GonshorGenetic
+
+ a := x
+
+ x3 e + x2 e + x1 e + x0 e
+ 3 2 1 0
+
+
+ b := (1/4)*e1 + (1/5)*e2 + (3/20)*e3 + (2/5)*e0
+
+ 3 1 1 2
+ -- e + - e + - e + - e
+ 20 3 5 2 4 1 5 0
+
+ c := (1/3)*e1 + (1/7)*e2 + (8/21)*e3 + (1/7)*e0
+
+ 8 1 1 1
+ -- e + - e + - e + - e
+ 21 3 7 2 3 1 7 0
+
+ r : R := r
+ s : R := s
+
+ b*c
+
+ 2 1 47 2
+ - e + - e - --- e + -- e
+ 7 3 4 2 420 1 35 0
+
+
+ (b*c)*b
+
+ 893 277 4 4
+ ---- e - ---- e + -- e + --- e
+ 8400 3 1400 2 75 1 175 0
+
+
+ b*(c*b)
+
+ 893 277 4 4
+ ---- e - ---- e + -- e + --- e
+ 8400 3 1400 2 75 1 175 0
+
+
+ A: Algebra
+ a,b,c : A
+ r,s : R
+
+ AP := ALGPKG(R,A)
+
+ r*a
+
+ r x3 e + r x2 e + r x1 e + r x0 e
+ 3 2 1 0
+
+ a*r
+
+ r x3 e + r x2 e + r x1 e + r x0 e
+ 3 2 1 0
+
+ a*b
+
+ 8x3 + 5x1 + 7x0 - 8x2 + 18x1 + x0 - 8x1 + 3x0 2x0
+ --------------- e + ----------------- e + ----------- e + --- e
+ 20 3 20 2 20 1 5 0
+
+ b*c
+
+ 2 1 47 2
+ - e + - e - --- e + -- e
+ 7 3 4 2 420 1 35 0
+
+
+ 12 * c
+
+ 32 12 12
+ -- e + -- e + 4e + -- e
+ 7 3 7 2 1 7 0
+
+
+ (-3) * a
+
+ - 3x3 e - 3x2 e - 3x1 e - 3x0 e
+ 3 2 1 0
+
+
+ d := a ** 12
+
+ 11 10 2 9 2 10 11 8 4
+ 12x0 x3 + 4x0 x2 + (144x0 x1 + 144x0 x1 - 68x0 )x2 + 248x0 x1
+ +
+ 9 3 10 2 11 12
+ - 784x0 x1 - 86x0 x1 + 204x0 x1 - 24x0
+ *
+ e
+ 3
+ +
+ 11 10 2 11 11 12 12
+ (4x0 x2 - 92x0 x1 + 28x0 x1)e + (4x0 x1 - x0 )e + x0 e
+ 2 1 0
+
+ -d
+
+ 11 10 2 9 2 10 11
+ - 12x0 x3 - 4x0 x2 + (- 144x0 x1 - 144x0 x1 + 68x0 )x2
+ +
+ 8 4 9 3 10 2 11 12
+ - 248x0 x1 + 784x0 x1 + 86x0 x1 - 204x0 x1 + 24x0
+ *
+ e
+ 3
+ +
+ 11 10 2 11 11 12 12
+ (- 4x0 x2 + 92x0 x1 - 28x0 x1)e + (- 4x0 x1 + x0 )e - x0 e
+ 2 1 0
+
+ a + b
+
+ 20x3 + 3 5x2 + 1 4x1 + 1 5x0 + 2
+ -------- e + ------- e + ------- e + ------- e
+ 20 3 5 2 4 1 5 0
+
+ d-c
+
+ 11 10 2 9 2 10 11
+ 252x0 x3 + 84x0 x2 + (3024x0 x1 + 3024x0 x1 - 1428x0 )x2
+ +
+ 8 4 9 3 10 2 11 12
+ 5208x0 x1 - 16464x0 x1 - 1806x0 x1 + 4284x0 x1 - 504x0 - 8
+ /
+ 21
+ *
+ e
+ 3
+ +
+ 11 10 2 11 11 12
+ 28x0 x2 - 644x0 x1 + 196x0 x1 - 1 12x0 x1 - 3x0 - 1
+ ------------------------------------- e + -------------------- e
+ 7 2 3 1
+ +
+ 12
+ 7x0 - 1
+ --------- e
+ 7 0
+
+ (a*(a*a) = leftPower(a,3)) :: Boolean
+ true
+
+ (a ** 11 = (a**8 * a**2) * a) :: Boolean
+ true
+
+ (a ** 11 = a**8 * (a**2 * a)) :: Boolean
+ false
+
+ zero := 0$A
+ 0
+
+ zero : A := 0
+ 0
+
+ alternative?()$A
+
+ algebra is not left alternative
+ false
+
+
+ antiCommutative?()$A
+
+ algebra is not anti-commutative
+ false
+
+
+ associative?()$A
+
+ algebra is not associative
+ false
+
+ commutative?()$A
+
+ algebra is commutative
+ true
+
+
+ commutator(a,b)
+ 0
+
+ antiCommutator(a,b)
+
+ 8x3 + 5x1 + 7x0 - 8x2 + 18x1 + x0 - 8x1 + 3x0 4x0
+ --------------- e + ----------------- e + ----------- e + --- e
+ 10 3 10 2 10 1 5 0
+
+ associator(a,b,c)
+
+ - 21x2 + 6x1 + 7x0 12x2 - 30x1 + 58x0 12x1 - 28x0
+ ------------------ e + ------------------ e + ----------- e
+ 42 3 105 2 105 1
+
+
+ basis()$A
+ [e ,e ,e ,e ]
+ 0 1 2 3
+
+
+ n := rank()$A
+ 4
+
+ v : Vector R := [i for i in 1..n]
+ [1,2,3,4]
+
+ g : A := represents v
+
+ 4e + 3e + 2e + e
+ 3 2 1 0
+
+ coordinates a
+ [x0,x1,x2,x3]
+
+
+ coordinates [a,b]
+
+ +x0 x1 x2 x3+
+ | |
+ |2 1 1 3|
+ |- - - --|
+ +5 4 5 20+
+
+
+ a.3
+ x2
+
+ flexible?()$A
+ algebra is flexible
+
+ leftAlternative?()$A
+ algebra is not left alternative
+
+ rightAlternative?()$A
+ algebra is not right alternative
+
+ sB := someBasis()$A
+
+ [e ,e ,e ,e ]
+ 0 1 2 3
+
+ zero? a
+ false
+
+associatorDependence()$A
+ [[1,1,1,0,0,0],[0,1,0,1,0,0],[1,0,0,0,1,0],[- 1,- 1,0,0,0,1]]
+
+
+ConditionsForIdempotents()$A
+
+ jacobiIdentity?()$A
+ Jacobi identity does not hold
+
+ jordanAlgebra?()$A
+ algebra is commutative
+ this is not a Jordan algebra
+
+ jordanAdmissible?()$A
+ algebra is not Jordan admissible
+
+ lieAdmissible?()$A
+ algebra is Lie admissible
+
+
+ConditionsForIdempotents
+
+ b2 := [reduce(+,[sB.i for i in 1..k]) for k in 1..n]
+
+ [e ,e + e ,e + e + e ,e + e + e + e ]
+ 0 1 0 2 1 0 3 2 1 0
+
+coordinates (a ,b2 :: Vector A)
+
+ [- x1 + x0,- x2 + x1,- x3 + x2,x3]
+
+coordinates ([a,b] ,bb := (b2 :: Vector A))
+
+ +- x1 + x0 - x2 + x1 - x3 + x2 x3+
+ | |
+ | 3 1 1 3|
+ | -- -- -- --|
+ + 20 20 20 20+
+
+ leftMinimalPolynomial a
+
+ 5 2 3 4
+ ? - 2x0 ? + x0 ?
+
+ leftPower (a,10)
+
+ 9 8 2 7 2 8 9 8 2 10
+ (10x0 x3 - 6x0 x2 + (- 32x0 x1 + 8x0 x1 + 2x0 )x2 + 13x0 x1 + 5x0 )e
+ 3
+ +
+ 9 8 2 9 10 9 10 10
+ (- 2x0 x2 + 26x0 x1 + 6x0 x1 - 4x0 )e + (- 2x0 x1 + x0 )e + x0 e
+ 2 1 0
+
+ rightPower(a,10)
+
+ 9 8 2 7 2 8 9 8 2 10
+ (10x0 x3 - 6x0 x2 + (- 32x0 x1 + 8x0 x1 + 2x0 )x2 + 13x0 x1 + 5x0 )e
+ 3
+ +
+ 9 8 2 9 10 9 10 10
+ (- 2x0 x2 + 26x0 x1 + 6x0 x1 - 4x0 )e + (- 2x0 x1 + x0 )e + x0 e
+ 2 1 0
+
+ leftRegularRepresentation a
+
+ +x0 - x1 + x0 - x2 + x1 x3 - x2 + x0+
+ | |
+ |0 - x0 2x1 + x0 x1 |
+ | |
+ |0 0 - x0 2x2 - x0 |
+ | |
+ +0 0 0 x0 +
+
+ leftRegularRepresentation (a,bb)
+
+ + x1 x2 - 2x1 + x0 - x3 + x1 - x0 x3 - x2 + x0 +
+ | |
+ |x1 + x0 x2 - 4x1 - x0 - x3 + 2x1 x3 - x2 + x1 + x0|
+ | |
+ |x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 x3 + x2 + x1 |
+ | |
+ +x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 - x0 x3 + x2 + x1 + x0+
+
+ leftUnit()$A
+ this algebra has no left unit
+
+
+ represents (v,bb)
+
+ 4e + 7e + 9e + 10e
+ 3 2 1 0
+
+ rightMinimalPolynomial a
+
+ 5 2 3 4
+ ? - 2x0 ? + x0 ?
+
+ rightRegularRepresentation a
+
+ +x0 - x1 + x0 - x2 + x1 x3 - x2 + x0+
+ | |
+ |0 - x0 2x1 + x0 x1 |
+ | |
+ |0 0 - x0 2x2 - x0 |
+ | |
+ +0 0 0 x0 +
+
+ rightRegularRepresentation (a,bb)
+
+ + x1 x2 - 2x1 + x0 - x3 + x1 - x0 x3 - x2 + x0 +
+ | |
+ |x1 + x0 x2 - 4x1 - x0 - x3 + 2x1 x3 - x2 + x1 + x0|
+ | |
+ |x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 x3 + x2 + x1 |
+ | |
+ +x1 + x0 x2 - 4x1 - x3 - 2x2 + 2x1 - x0 x3 + x2 + x1 + x0+
+
+ rightUnit()$A
+ this algebra has no right unit
+
+ structuralConstants()$A
+
+ +1 0 0 0+ + 1 - 1 0 0+ + 0 1 - 1 0+ + 1 0 - 1 1+
+ | | | | | | | |
+ |0 0 0 0| |- 1 0 0 0| | 1 2 0 0| | 0 1 0 0|
+ [| |,| |,| |,| |]
+ |0 0 0 0| | 0 0 0 0| |- 1 0 0 0| |- 1 0 2 0|
+ | | | | | | | |
+ +0 0 0 0+ + 0 0 0 0+ + 0 0 0 0+ + 1 0 0 0+
+
+ structuralConstants(bb)
+
+ +0 1 1 1+ + 1 - 1 0 0 + +- 1 0 0 - 1+ +1 1 0 1+
+ | | | | | | | |
+ |1 2 2 2| |- 1 - 5 - 4 - 4| | 0 2 2 1 | |1 2 1 2|
+ [| |,| |,| |,| |]
+ |1 2 2 2| | 0 - 4 - 3 - 3| | 0 2 0 - 1| |0 1 2 3|
+ | | | | | | | |
+ +1 2 2 2+ + 0 - 4 - 3 - 3+ +- 1 1 - 1 - 2+ +1 2 3 4+
+
+ unit()$A
+ this algebra has no unit
+
+ biRank a
+ 4
+
+ leftRank a
+ 4
+
+ doubleRank a
+ 4
+
+ rightRank a
+ 4
+
+ weakBiRank a
+ 4
+
+ basisOfCenter()$AP
+
+ [e ]
+ 3
+
+ basisOfLeftNucleus()$AP
+
+ [e ]
+ 3
+
+ basisOfNucleus()$AP
+
+ [e ]
+ 3
+
+ basisOfRightNucleus()$AP
+
+ [e ]
+ 3
+
+ basisOfCentroid()$AP
+
+ +0 0 0 0+ +1 0 0 0+
+ | | | |
+ |0 0 0 0| |0 1 0 0|
+ [| |,| |]
+ |0 0 0 0| |0 0 1 0|
+ | | | |
+ +1 0 0 0+ +0 0 0 1+
+
+ basisOfCommutingElements()$AP
+
+ [e ,e ,e ,e ]
+ 3 2 1 0
+
+ basisOfLeftNucloid()$AP
+
+ +0 0 0 0+ +1 0 0 0+
+ | | | |
+ |0 0 0 0| |0 1 0 0|
+ [| |,| |]
+ |0 0 0 0| |0 0 1 0|
+ | | | |
+ +1 0 0 0+ +0 0 0 1+
+
+ basisOfMiddleNucleus()$AP
+
+ [e ]
+ 3
+
+ basisOfRightNucloid()$AP
+
+ +0 0 0 0+ +1 0 0 0+
+ | | | |
+ |0 0 0 0| |0 1 0 0|
+ [| |,| |]
+ |0 0 0 0| |0 0 1 0|
+ | | | |
+ +1 0 0 0+ +0 0 0 1+
+
+See Also:
+o )show AlgebraGivenByStructuralConstants
+
+\end{chunk}
+\begin{chunk}{coerce.help}
+====================================================================
+coerce from AlgebraGivenByStructuralConstants (ALGSC)
+====================================================================
+
+NAME
+====
+
+coerce
+
+DOMAIN
+======
+
+AlgebraGivenByStructuralConstants (ALGSC)
+
+SYNOPSYS
+========
+
+ coerce : Vector R -> %
+
+DESCRIPTION
+===========
+
+ coerce(v) converts a vector to a member of the algebra by forming
+ by forming a linear combination with the basis element. Note: the
+ vector is assumed to have length equal to the dimension of the
+ algebra
+
+ARGUMENTS
+=========
+
+ Vector R where R is Field
+
+RETURN VALUE
+============
+
+ An element of the domain
+
+EXAMPLES
+========
+
+NOTES
+=====
+
+REFERENCES
+==========
+
+SEE ALSO
+========
-See Also:
o )show AlgebraGivenByStructuralConstants
+o )d op coerce
\end{chunk}
diff --git a/books/bookvolbib.pamphlet b/books/bookvolbib.pamphlet
index 5ca5716..c417014 100644
--- a/books/bookvolbib.pamphlet
+++ b/books/bookvolbib.pamphlet
@@ -20,6 +20,85 @@ paragraph for those unfamiliar with the terms.
\chapter{The Bibliography}
+\section{Algebra Documentation References}
+
+\index{W\"orz-Busekros, A.}
+\begin{chunk}{axiom.bib}
+@article{Worz80,
+ author = {W\"orz-Busekros, A.},
+ title = "Algebra in Genetics",
+ publisher = "Springer-Verlag",
+ journal = "Lecture Notes in Biomathematics",
+ volume = "36",
+ year = "1980",
+ comment = "documentation for AlgebraGivenByStructuralConstants"
+}
+
+\end{chunk}
+
+\index{Reed, Mary Lynn}
+\begin{chunk}{axiom.bib}
+@article{Reed97,
+ author = "Reed, Mary Lynn",
+ title = "Algebraic Structure of Genetic Inheritance",
+ journal = "Bulletin of the American Mathematical Society",
+ year = "1997",
+ volume = "34",
+ number = "2",
+ month = "April",
+ pages = "107--130",
+ paper = "Reed97.pdf",
+ comment = "documentation for AlgebraGivenByStructuralConstants",
+ url="http://www.ams.org/bull/1997-34-02/S0273-0979-97-00712-X/S0273-0979-97-00712-X.pdf",
+ abstract =
+ "In this paper we will explore the nonassociative algebraic structure
+ that naturally ocurs as genetic informatin gets passed down through
+ the generations. While modern understanding of genetic inheritance
+ initiated with the theories of Charles Darwin, it was the Augustinian
+ monk Gregor Mendel who began to uncover the mathematical nature of the
+ subject. In fact, the symbolism Mendel used to describe his first
+ results (e.g. see his 1866 paper {\sl Experiments in
+ Plant-Hybridization} is quite algebraically suggestive. Seventy four
+ years later, I.M.H. Etherington introduced the formal language of
+ abstract algebra to the study of genetics in his series of seminal
+ papers. In this paper we will discuss the concepts of genetics that
+ suggest the underlying algebraic structure of inheritance, and we will
+ give a brief overview of the algebras which arise in genetics and some
+ of their basi properties and relationships. With the popularity of
+ biologically motivated mathematics continuing to rise, we offer this
+ survey article as another example of the breadth of mathematics that
+ has biological significance. The most comprehensive reference for the
+ mathematical research done in this area (through 1980) is
+ W\:orz-Busekros."
+}
+
+\end{chunk}
+
+\index{Gonshor, H.}
+\begin{chunk}{axiom.bib}
+@article{Gons71,
+ author = "Gonshor, H.",
+ title = "Contributions to Genetic Algebras",
+ journal = "Proc. Edinburgh Mathmatical Society (Series 2)",
+ volume = "17",
+ number = "4",
+ month = "December",
+ year = "1971",
+ issn = "1464-3839",
+ pages = "289--298",
+ doi = "10.1017/S0013091500009548",
+ url = "http://journals.cambridge.org/article_S0013091500009548",
+ comment = "documentation for AlgebraGivenByStructuralConstants",
+ abstract =
+ "Etherington introduced certain algebraic methods into the study of
+ population genetics. It was noted that algebras arising in genetic
+ systems tend to have certain abstract properties and that these can be
+ used to give elegant proofs of some classical stability theorems in
+ population genetics."
+}
+
+\end{chunk}
+
\section{Linear Algebra} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\index{Kaltofen, Erich}
diff --git a/changelog b/changelog
index 1a98472..297e140 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20141116 tpd src/axiom-website/patches.html 20141116.02.tpd.patch
+20141116 tpd books/bookvol10.3 help for AlgebraGivenByStructuralConstants
20141116 tpd src/axiom-website/patches.html 20141116.01.tpd.patch
20141116 tpd books/bookvol10.3 prototype man-page style help for functions
20141113 tpd src/axiom-website/patches.html 20141113.01.tpd.patch
diff --git a/patch b/patch
index ac660fb..d30d487 100644
--- a/patch
+++ b/patch
@@ -1,4 +1,6 @@
-books/bookvol10.3 prototype man-page style help for functions
+books/bookvol10.3 help file for AlgebraGivenByStructuralConstants (ALGSC)
+
+AlgebraGivenByStructuralConstants (ALGSC) help file
+coerce from ALGSC help file
-Axiom needs function-level help files. Prototype these for DHMATRIX.
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 31a3613..f301dbe 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4702,6 +4702,8 @@ books/bookvol5 make obj fns into macros for performance
books/bookvol5 inline object structures using macros
20141116.01.tpd.patch
books/bookvol10.3 prototype man-page style help for functions
+20141116.02.tpd.patch
+books/bookvol10.3 help file for AlgebraGivenByStructuralConstants