9.10 CliffordAlgebra¶
CliffordAlgebra(n,K,Q) defines a vector space of dimension 2n over the field K with a given quadratic form Q. If {e1,…,en} is a basis for Kn then
{ 1,
e(i) 1 <= i <= n,
e(i1)*e(i2) 1 <= i1 < i2 <=n,
...,
e(1)*e(2)*...*e(n) }
is a basis for the Clifford algebra. The algebra is defined by the relations
e(i)*e(i) = Q(e(i))
e(i)*e(j) = -e(j)*e(i), i ^= j
Examples of Clifford Algebras are gaussians (complex numbers), quaternions, exterior algebras and spin algebras.
9.10.1 The Complex Numbers as a Clifford Algebra¶
This is the field over which we will work, rational functions with integer coefficients.
K := Fraction Polynomial Integer
FractionPolynomialInteger |
Type: Domain
We use this matrix for the quadratic form.
m := matrix [ [-1] ]
[-1] |
Type: Matrix Integer
We get complex arithmetic by using this domain.
C := CliffordAlgebra(1, K, m)
CliffordAlgebra(1,FractionPolynomialInteger,MATRIX) |
Type: Domain
Here is i, the usual square root of -1.
i: C := e(1)
e1 |
Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
Here are some examples of the arithmetic.
x := a + b * i
a+be1 |
Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
y := c + d * i
c+de1 |
Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
See ComplexXmpPage for examples of FriCAS’s constructor implementing complex numbers.
x * y
-bd+ac+(ad+bc)e1 |
Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
9.10.2 The Quaternion Numbers as a Clifford Algebra¶
This is the field over which we will work, rational functions with integer coefficients.
K := Fraction Polynomial Integer
FractionPolynomialInteger |
Type: Domain
We use this matrix for the quadratic form.
m := matrix [ [-1,0],[0,-1] ]
[-100-1] |
Type: Matrix Integer
The resulting domain is the quaternions.
H := CliffordAlgebra(2, K, m)
CliffordAlgebra(2,FractionPolynomialInteger,MATRIX) |
Type: Domain
We use Hamilton’s notation for i,j,k.
i: H := e(1)
e1 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
j: H := e(2)
e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
k: H := i * j
e1e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
x := a + b * i + c * j + d * k
a+be1+ce2+de1e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
y := e + f * i + g * j + h * k
e+fe1+ge2+he1e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
x + y
e+a+(f+b)e1+(g+c)e2+(h+d)e1e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
x * y
-dh-cg-bf+ae+(ch-dg+af+be)e1+(-bh+ag+df+ce)e2+(ah+bg-cf+de)e1e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
See QuaternionXmpPage for examples of FriCAS’s constructor implementing quaternions.
y * x
-dh-cg-bf+ae+(-ch+dg+af+be)e1+(bh+ag-df+ce)e2+(ah-bg+cf+de)e1e2 |
Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
9.10.3 The Exterior Algebra on a Three Space¶
This is the field over which we will work, rational functions with integer coefficients.
K := Fraction Polynomial Integer
FractionPolynomialInteger |
Type: Domain
If we chose the three by three zero quadratic form, we obtain the exterior algebra on e(1),e(2),e(3).
Ext := CliffordAlgebra(3, K, 0)
CliffordAlgebra(3,FractionPolynomialInteger,MATRIX) |
Type: Domain
This is a three dimensional vector algebra. We define i, j, k as the unit vectors.
i: Ext := e(1)
e1 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
j: Ext := e(2)
e2 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
k: Ext := e(3)
e3 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
Now it is possible to do arithmetic.
x := x1*i + x2*j + x3*k
x1e1+x2e2+x3e3 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
y := y1*i + y2*j + y3*k
y1e1+y2e2+y3e3 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
x + y
(y1+x1)e1+(y2+x2)e2+(y3+x3)e3 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
x * y + y * x
0 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
On an n space, a grade p form has a dual n-p form. In particular, in three space the dual of a grade two element identifies e1*e2->e3, e2*e3->e1, e3*e1->e2.
dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j +
coefficient(a,[1,2]) * k
Type: Void
The vector cross product is then given by this.
dual2(x*y)
Compiling function dual2 with type CliffordAlgebra(3,Fraction
Polynomial Integer,MATRIX) -> CliffordAlgebra(3,Fraction
Polynomial Integer,MATRIX)
(x2y3-x3y2)e1+(-x1y3+x3y1)e2+(x1y2-x2y1)e3 |
Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
9.10.4 The Dirac Spin Algebra¶
In this section we will work over the field of rational numbers.
K := Fraction Integer
FractionInteger |
Type: Domain
We define the quadratic form to be the Minkowski space-time metric.
g := matrix [ [1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1] ]
[10000-10000-10000-1] |
Type: Matrix Integer
We obtain the Dirac spin algebra used in Relativistic Quantum Field Theory.
D := CliffordAlgebra(4,K, g)
CliffordAlgebra(4,FractionInteger,MATRIX) |
Type: Domain
The usual notation for the basis is γ with a superscript. For FriCAS input we will use gam(i):
gam := [e(i)$D for i in 1..4]
[e1,e2,e3,e4] |
Type: List CliffordAlgebra(4,Fraction Integer,MATRIX)
There are various contraction identities of the form
g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) =
2*(gam(s)gam(m)gam(n)gam(r) + gam(r)*gam(n)*gam(m)*gam(s))
where a sum over l and t is implied.
Verify this identity for particular values of m,n,r,s.
m := 1; n:= 2; r := 3; s := 4;
Type: PositiveInteger
lhs := reduce(+, [reduce(+, [
g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) for l in 1..4]) for t in 1..4])
-4e1e2e3e4 |
Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)
-4e1e2e3e4 |
Type: CliffordAlgebra(4,Fraction Integer,MATRIX)