% Copyright The Numerical Algorithms Group Limited 1992-94. All rights reserved.
% !! DO NOT MODIFY THIS FILE BY HAND !! Created by ht.awk.
\newcommand{\CliffordAlgebraXmpTitle}{CliffordAlgebra}
\newcommand{\CliffordAlgebraXmpNumber}{9.10}
%
% =====================================================================
\begin{page}{CliffordAlgebraXmpPage}{9.10 CliffordAlgebra}
% =====================================================================
\beginscroll

\noindent
\spadtype{CliffordAlgebra(n,K,Q)} defines a vector space of dimension
\texht{$2^n$}{\spad{2**n}} over the field \texht{$K$}{\spad{K}} with a
given quadratic form \spad{Q}.
If \texht{$\{e_1, \ldots, e_n\}$}{\spad{\{e(i), 1<=i<=n\}}}
is a basis for  \texht{$K^n$}{\spad{K**n}} then
\begin{verbatim}
{ 1,
  e(i) 1 <= i <= n,
  e(i1)*e(i2) 1 <= i1 < i2 <=n,
  ...,
  e(1)*e(2)*...*e(n) }
\end{verbatim}
is a basis for the Clifford algebra.
The algebra is defined by the relations
\begin{verbatim}
e(i)*e(i) = Q(e(i))
e(i)*e(j) = -e(j)*e(i),  i ^= j
\end{verbatim}
Examples of Clifford Algebras are
gaussians (complex numbers), quaternions,
exterior algebras and spin algebras.
%

\beginmenu
    \menudownlink{{9.10.1. The Complex Numbers as a Clifford Algebra}}{ugxCliffordComplexPage}
    \menudownlink{{9.10.2. The Quaternion Numbers as a Clifford Algebra}}{ugxCliffordQuaternPage}
    \menudownlink{{9.10.3. The Exterior Algebra on a Three Space}}{ugxCliffordExteriorPage}
    \menudownlink{{9.10.4. The Dirac Spin Algebra}}{ugxCliffordDiracPage}
\endmenu
\endscroll
\autobuttons
\end{page}
%
%
\newcommand{\ugxCliffordComplexTitle}{The Complex Numbers as a Clifford Algebra}
\newcommand{\ugxCliffordComplexNumber}{9.10.1.}
%
% =====================================================================
\begin{page}{ugxCliffordComplexPage}{9.10.1. The Complex Numbers as a Clifford Algebra}
% =====================================================================
\beginscroll

\labelSpace{5pc}
\xtc{
This is the field over which we will work, rational functions with
integer coefficients.
}{
\spadpaste{K := Fraction Polynomial Integer \bound{K}}
}
\xtc{
We use this matrix for the quadratic form.
}{
\spadpaste{m := matrix [[-1]] \bound{m}}
}
\xtc{
We get complex arithmetic by using this domain.
%-% \HDindex{complex numbers}{ugxCliffordComplexPage}{9.10.1.}{The Complex Numbers as a Clifford Algebra}
}{
\spadpaste{C := CliffordAlgebra(1, K, quadraticForm m) \free{K m}\bound{C}}
}
\xtc{
Here is \spad{i}, the usual square root of \spad{-1.}
}{
\spadpaste{i: C := e(1)   \bound{i}\free{C}}
}
\xtc{
Here are some examples of the arithmetic.
}{
\spadpaste{x := a + b * i \bound{x}\free{i}}
}
\xtc{
}{
\spadpaste{y := c + d * i \bound{y}\free{i}}
}
\xtc{
See \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} for examples of \Language{}'s constructor
implementing complex numbers.
}{
\spadpaste{x * y \free{x y}}
}

\endscroll
\autobuttons
\end{page}
%
%
\newcommand{\ugxCliffordQuaternTitle}{The Quaternion Numbers as a Clifford Algebra}
\newcommand{\ugxCliffordQuaternNumber}{9.10.2.}
%
% =====================================================================
\begin{page}{ugxCliffordQuaternPage}{9.10.2. The Quaternion Numbers as a Clifford Algebra}
% =====================================================================
\beginscroll

\labelSpace{3pc}
\xtc{
This is the field over which we will work, rational functions with
integer coefficients.
}{
\spadpaste{K := Fraction Polynomial Integer \bound{K}}
}
\xtc{
We use this matrix for the quadratic form.
}{
\spadpaste{m := matrix [[-1,0],[0,-1]] \bound{m}}
}
\xtc{
The resulting domain is the quaternions.
%-% \HDindex{quaternions}{ugxCliffordQuaternPage}{9.10.2.}{The Quaternion Numbers as a Clifford Algebra}
}{
\spadpaste{H  := CliffordAlgebra(2, K, quadraticForm m) \free{K m}\bound{H}}
}
\xtc{
We use Hamilton's notation for \spad{i},\spad{j},\spad{k}.
}{
\spadpaste{i: H  := e(1) \free{H}\bound{i}}
}
\xtc{
}{
\spadpaste{j: H  := e(2) \free{H}\bound{j}}
}
\xtc{
}{
\spadpaste{k: H  := i * j \free{H,i,j}\bound{k}}
}
\xtc{
}{
\spadpaste{x := a + b * i + c * j + d * k \free{i j k}\bound{x}}
}
\xtc{
}{
\spadpaste{y := e + f * i + g * j + h * k \free{i j k}\bound{y}}
}
\xtc{
}{
\spadpaste{x + y \free{x y}}
}
\xtc{
}{
\spadpaste{x * y \free{x y}}
}
\xtc{
See \downlink{`Quaternion'}{QuaternionXmpPage}\ignore{Quaternion} for examples of \Language{}'s constructor
implementing quaternions.
}{
\spadpaste{y * x \free{x y}}
}

\endscroll
\autobuttons
\end{page}
%
%
\newcommand{\ugxCliffordExteriorTitle}{The Exterior Algebra on a Three Space}
\newcommand{\ugxCliffordExteriorNumber}{9.10.3.}
%
% =====================================================================
\begin{page}{ugxCliffordExteriorPage}{9.10.3. The Exterior Algebra on a Three Space}
% =====================================================================
\beginscroll

\labelSpace{4pc}
\xtc{
This is the field over which we will work, rational functions with
integer coefficients.
}{
\spadpaste{K := Fraction Polynomial Integer \bound{K}}
}
\xtc{
If we chose the three by three zero quadratic form, we obtain
%-% \HDindex{exterior algebra}{ugxCliffordExteriorPage}{9.10.3.}{The Exterior Algebra on a Three Space}
the exterior algebra on \spad{e(1),e(2),e(3)}.
%-% \HDindex{algebra!exterior}{ugxCliffordExteriorPage}{9.10.3.}{The Exterior Algebra on a Three Space}
}{
\spadpaste{Ext := CliffordAlgebra(3, K, quadraticForm 0) \bound{Ext}\free{K}}
}
\xtc{
This is a three dimensional vector algebra.
We define \spad{i}, \spad{j}, \spad{k} as the unit vectors.
}{
\spadpaste{i: Ext := e(1) \free{Ext}\bound{i}}
}
\xtc{
}{
\spadpaste{j: Ext := e(2) \free{Ext}\bound{j}}
}
\xtc{
}{
\spadpaste{k: Ext := e(3) \free{Ext}\bound{k}}
}
\xtc{
Now it is possible to do arithmetic.
}{
\spadpaste{x := x1*i + x2*j + x3*k \free{i j k}\bound{x}}
}
\xtc{
}{
\spadpaste{y := y1*i + y2*j + y3*k \free{i j k}\bound{y}}
}
\xtc{
}{
\spadpaste{x + y         \free{x y}}
}
\xtc{
}{
\spadpaste{x * y + y * x \free{x y}}
}
\xtc{
On an \spad{n} space, a grade \spad{p} form has a dual \spad{n-p} form.
In particular, in three space the dual of a grade two element identifies
\spad{e1*e2->e3, e2*e3->e1, e3*e1->e2}.
}{
\spadpaste{dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k \free{i j k}\bound{dual2}}
}
\xtc{
The vector cross product is then given by this.
}{
\spadpaste{dual2(x*y) \free{x y dual2}}
}

\endscroll
\autobuttons
\end{page}
%
%
\newcommand{\ugxCliffordDiracTitle}{The Dirac Spin Algebra}
\newcommand{\ugxCliffordDiracNumber}{9.10.4.}
%
% =====================================================================
\begin{page}{ugxCliffordDiracPage}{9.10.4. The Dirac Spin Algebra}
% =====================================================================
\beginscroll

\labelSpace{4pc}
%-% \HDindex{Dirac spin algebra}{ugxCliffordDiracPage}{9.10.4.}{The Dirac Spin Algebra}
%-% \HDindex{algebra!Dirac spin}{ugxCliffordDiracPage}{9.10.4.}{The Dirac Spin Algebra}
%
\xtc{
In this section we will work over the field of rational numbers.
}{
\spadpaste{K := Fraction Integer \bound{K}}
}
\xtc{
We define the quadratic form to be the Minkowski space-time metric.
}{
\spadpaste{g := matrix [[1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1]] \bound{g}}
}
\xtc{
We obtain the Dirac spin algebra
used in Relativistic Quantum Field Theory.
%-% \HDindex{Relativistic Quantum Field Theory}{ugxCliffordDiracPage}{9.10.4.}{The Dirac Spin Algebra}
}{
\spadpaste{D := CliffordAlgebra(4,K, quadraticForm g) \free{K g}\bound{D}}
}
\xtc{
The usual notation for the basis is \texht{$\gamma$}{\spad{gamma}}
with a superscript.
For \Language{} input we will use \spad{gam(i)}:
}{
\spadpaste{gam := [e(i)\$D for i in 1..4] \free{D}\bound{gam}}
}
\noindent
There are various contraction identities of the form
\begin{verbatim}
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))
\end{verbatim}
where a sum over \spad{l} and \spad{t} is implied.
\xtc{
Verify this identity for particular values of \spad{m,n,r,s}.
}{
\spadpaste{m := 1; n:= 2; r := 3; s := 4; \bound{m,n,r,s}}
}
\xtc{
}{
\spadpaste{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]) \bound{lhs}\free{g gam m n r s}}
}
\xtc{
}{
\spadpaste{rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s) \bound{rhs}\free{lhs g gam m n r s}}
}
\endscroll
\autobuttons
\end{page}
%