# 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



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)