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)