login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandBoxCliffordAlgebra revision 7 of 9

1 2 3 4 5 6 7 8 9
Editor: Bill Page
Time: 2009/11/03 15:32:07 GMT-8
Note: embedded some LaTeX formatting

changed:
-and this is plainly wrong. Eg f13 = 1/2*e(1)*e(3) - 1/2*(e(3)/\e(1)+ B(e3,e1)) and further simplification leads to
-f12 = 1/2* e(1)*e(3) +1/2*( e(1)/\e(3) - B(e1,e3)) = e(1)*e(3) - 1/2*B(e1,e3) and all these off diagonal contraction
-terms are missing in the basis. Hence the AXIOM(TM) CliffordAlegbra domain works only in the basis of generators
and this is plainly wrong. Eg
\begin{equation}
f_{13} = \frac{1}{2}\ e_1 e_3 - \frac{1}{2} \ (e_3 \wedge e_1 + B(e_3,e_1))
\end{equation}
and further simplification leads to
\begin{eqnarray}
f_{13} &=& \frac{1}{2} \ e_1 e_3 + \frac{1}{2} \ ( e_1 \wedge e_3 - B(e_1,e_3)) \\
&=& e_1 e_3 - \frac{1}{2} \ B(e_1,e_3)
\end{eqnarray}
and all these off diagonal contraction
terms are missing in the basis. Hence the $\text{AXIOM}^{TM}$ CliffordAlgebra domain works only in the basis of generators

added:


We want to test some properties of the CliffordAlgebra? domain implemented in AXIOM(TM)

axiom
diagMat:=matrix[[1,0,0],[0,1,0],[0,0,1]]

\label{eq1}\left[ 
\begin{array}{ccc}
1 & 0 & 0 
\
0 & 1 & 0 
\
0 & 0 & 1 
(1)
Type: Matrix(Integer)
axiom
dq := quadraticForm diagMat

\label{eq2}\left[ 
\begin{array}{ccc}
1 & 0 & 0 
\
0 & 1 & 0 
\
0 & 0 & 1 
(2)
Type: QuadraticForm?(3,Fraction(Integer))
axiom
CLDQ := CliffordAlgebra(3, Fraction(Integer), dq)
Cannot convert from type QuadraticForm(3,Fraction(Integer)) to SquareMatrix(3,Fraction(Integer)) for value +1 0 0+ | | |0 1 0| | | +0 0 1+

CLDQ contains now the Clifford algebra constructor for the Clifford algebra CL(R^3,Q) where dq is the diagonal quadratic form in the basis of generators ei=e(i)

axiom
basGen: List CLDQ :=[1, e(1), e(2), e(1)*e(2), e(3), e(1)*e(3), e(2)*e(3), e(1)*e(2)*e(3)]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need.

And we can now compute within this basis

axiom
elem1: CLDQ :=2*e(1)+e(2)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. elem2: CLDQ :=1/2+e(2)+3*e(1)*e(3)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. elem1*elem2

\label{eq3}elem 1 \  elem 2(3)
Type: Polynomial(Integer)

which is fine.

Lets now see what happens if we change the basis. We define new generators

axiom
f1:CLDQ := e(1)-e(2)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. f2:CLDQ := e(2)-e(3)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. f3:CLDQ := e(1)+e(2)+e(3)
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. lstFGen: List CLDQ := [f1, f2, f3]
Cannot convert right-hand side of assignment [f1,f2,f3]
to an object of the type List(NIL) of the left-hand side.

and check what the new defining relations are

axiom
matrix [[y*x for x in lstFGen] for y in lstFGen]
lstFGen is declared as being in List(NIL) but has not been given a value.

However, let us do the same calculations with another, symmetric but not diagonal quadratic form

axiom
offDiagMat:=matrix[[0,0,1],[0,1,0],[1,0,0]]

\label{eq4}\left[ 
\begin{array}{ccc}
0 & 0 & 1 
\
0 & 1 & 0 
\
1 & 0 & 0 
(4)
Type: Matrix(Integer)
axiom
odq := quadraticForm offDiagMat

\label{eq5}\left[ 
\begin{array}{ccc}
0 & 0 & 1 
\
0 & 1 & 0 
\
1 & 0 & 0 
(5)
Type: QuadraticForm?(3,Fraction(Integer))
axiom
CLODQ := CliffordAlgebra(3, Fraction(Integer), odq)
Cannot convert from type QuadraticForm(3,Fraction(Integer)) to SquareMatrix(3,Fraction(Integer)) for value +0 0 1+ | | |0 1 0| | | +1 0 0+
basGenO: List CLODQ :=[1, e(1), e(2), e(1)*e(2), e(3), e(1)*e(3), e(2)*e(3), e(1)*e(2)*e(3)]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. basO: List CLODQ :=[e(1), e(2), e(3)]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need.

and let us check the multiplication table on the basis and in general:

axiom
matrix [[y*x for x in basO] for y in basO]
basO is declared as being in List(NIL) but has not been given a value. matrix [[y*x for x in basGenO] for y in basGenO]
basGenO is declared as being in List(NIL) but has not been given a value.

which is irritating, since the Clifford product is just unevaluated, hence the basis elements are generated by Cliffrord products. We would like to see this more explicit in the Grassmann basis, which we define as follows:

axiom
f12: CLODQ := 1/2*( e(1)*e(2)-e(2)*e(1) )
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. f13: CLODQ := 1/2*( e(1)*e(3)-e(3)*e(1) )
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. f23: CLODQ := 1/2*( e(2)*e(3)-e(3)*e(2) )
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need. f123: CLODQ := 1/3*( f12*e(3)$CLODQ- f13*e(2)$CLODQ + f23*e(1)$CLODQ ) -- need this od $CLODQ
The function e is not implemented in NIL . fbasis:List CLODQ :=[ 1, e(1), e(2), f12 , e(3), f13 , f23, f123 ]
There are 1 exposed and 0 unexposed library operations named e having 1 argument(s) but none was determined to be applicable. Use HyperDoc Browse, or issue )display op e to learn more about the available operations. Perhaps package-calling the operation or using coercions on the arguments will allow you to apply the operation.
Cannot find a definition or applicable library operation named e with argument type(s) PositiveInteger
Perhaps you should use "@" to indicate the required return type, or "$" to specify which version of the function you need.

and this is plainly wrong. Eg


\label{eq6}
f_{13} = \frac{1}{2}\ e_1 e_3 - \frac{1}{2} \ (e_3 \wedge e_1 + B(e_3,e_1))
(6)
and further simplification leads to

\label{eq7}
f_{13} &=& \frac{1}{2} \ e_1 e_3 + \frac{1}{2} \ ( e_1 \wedge e_3 - B(e_1,e_3)) \
&=& e_1 e_3 - \frac{1}{2} \ B(e_1,e_3)
(7)
and all these off diagonal contraction terms are missing in the basis. Hence the \text{AXIOM}^{TM} CliffordAlgebra? domain works only in the basis of generators which diagonalized the quadratic form!

Actually this calls for a new domain CliffordAlgebra? which does it right ;-).