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]]
Type: Matrix(Integer)
axiom
DQ := quadraticForm DiagMat
Type: QuadraticForm
?(3,Fraction(Integer))
axiom
CLDQ := CliffordAlgebra(3, Fraction(Integer), DQ)
Type: Domain
CLDQ contains now the Clifford algebra constructor for the Clifford algebra CL(R^3,Q)
where Q 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)]
Type: List(CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?))
And we can now compute within this basis
axiom
elem1: CLDQ :=2*e(1)+e(2)
Type: CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?)
axiom
elem2: CLDQ :=1/2+e(2)+3*e(1)*e(3)
Type: CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?)
axiom
elem1*elem2
Type: CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?)
which is fine.
Lets now see what happens if we change the basis. We define new generators
axiom
f1:CLDQ := e(1)-e(2)
Type: CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?)
axiom
f2:CLDQ := e(2)-e(3)
Type: CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?)
axiom
f3:CLDQ := e(1)+e(2)+e(3)
Type: CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?)
axiom
lstFGen: List CLDQ := [f1, f2, f3]
Type: List(CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?))
and check what the new defining relations are
axiom
matrix [[y*x for x in lstFGen] for y in lstFGen]
Type: Matrix(CliffordAlgebra
?(3,Fraction(Integer),[[1,0,0],[0,1,0]
?,[0,0,1]]
?))
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]]
Type: Matrix(Integer)
axiom
ODQ := quadraticForm OffDiagMat
Type: QuadraticForm
?(3,Fraction(Integer))
axiom
CLODQ := CliffordAlgebra(3, Fraction(Integer), ODQ)
Type: Domain
axiom
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)]
Type: List(CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?))
axiom
basO: List CLODQ :=[e(1), e(2), e(3)]
Type: List(CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?))
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]
Type: Matrix(CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?))
axiom
matrix [[y*x for x in basGenO] for y in basGenO]
Type: Matrix(CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?))
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) )
Type: CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?)
axiom
f13: CLODQ := 1/2*( e(1)*e(3)-e(3)*e(1) )
Type: CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?)
axiom
f23: CLODQ := 1/2*( e(2)*e(3)-e(3)*e(2) )
Type: CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?)
axiom
f123: CLODQ := 1/3*( f12*e(3)$CLODQ- f13*e(2)$CLODQ +
f23*e(1)$CLODQ ) -- need this od $CLODQ
Type: CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?)
axiom
fbasis:List CLODQ :=[ 1, e(1), e(2), f12 , e(3), f13 , f23, f123 ]
Type: List(CliffordAlgebra
?(3,Fraction(Integer),[[0,0,1],[0,1,0]
?,[1,0,0]]
?))
and this is plainly wrong. Eg f13 = 1/2e(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/2B(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
which diagonalized the quadratic form!
Actually this calls for a new domain CliffordAlgebra? which does it right ;-).