Function: Cliff5[beta_plus], Cliff5[beta_minus] - computes scalar product in spinor ideals

Calling Sequence:

beta_plus(psi, phi, f, 's') - computes a scalar product of two spinors 'psi' and 'phi' in S=Cl(Q)f when one of them is subject to reversion anti-automorphism where S is a spinor ideal in Cl(Q) generated by a primitive idempotent 'f'; argument 's' is optional

beta_minus(psi, phi, f, 's') - computes a scalar product of two spinors 'psi' and 'phi' in S=Cl(Q)f when one of them is subject to conjugation anti-automorphism where S is a spinor ideal in Cl(Q) generated by a primitive idempotent 'f'; argument 's' is optional

Parameters:

psi, phi - elements in S=Cl(Q)f which are of one of the following types: `type/cliscalar`, `type/clibasmon`, `type/climon`, or `type/clipolynom`
f - element of `type/primitiveidemp`, that is, a primitive idempotent in Cl(Q)

's' (optional) - optional argument of `type/name` (it must be unevaluatted name)

Description:

These two procedures give beta_{+} and beta_{-} scalar products on S=Cl(Q)f considered as right K-modules that have been described in [1] and [4].

The first two arguments are spinors 'psi' and 'phi' which are expected to be of type one of the types `type/cliscalar` , `type/clibasmon` , `type/climon` , or `type/clipolynom` with the most general one being the last one. Procedures reversion and conjugation realize operations of reversion and conjugation in Cl(Q) (more generally in Cl(V,B)), where Q is a quadratic form defined in V, that is, Cl(Q)=Cl(V,Q). The third argument is a primitive idempotent f in Cl(Q), that is, an element of `type/primitiveidemp' . This idempotent, as it is explained below, can be arbitrary in case when K = R, while there are some restrictions what it can be when K = C and K = H.

The fourth optional argument 's' is of `type/name' : it will be a placeholder for an invertible element s in Cl(Q) such that cmul(f, s) = cmul(s, auto(f)) for a simple Clifford algebra Cl(Q) (when the signature of Q is (p,q) and p - q <> 1 mod 4), or cmul(g, s) = cmul(g, auto(g)) for a semisimple Clifford algebra Cl(Q) (when the signature of Q is (p,q) and p - q = 1 mod 4). Here, cmul denotes Clifford product in Cl(Q), g = f + conjugation(f), and 'auto' is either 'reversion' or 'conjugation'. Invertible element s is needed so that cmul( s, auto(psi), phi) belongs to K, K^ or K + K^, depending on the chosen (anti-) automorphism and whether Cl(Q) is simple or semisimple. Here K is a subalgebra of Cl(Q) isomorphic with the reals, complex numbers, or quaternions depending on the signature of Q (for more information see [1]) and the hat in K^ denotes grade involution in Cl(Q). The grade involution is computed with the procedure gradeinv . Upon exiting, 'beta' stores the value of s under the name 's' supplied by the user. These special elements s in Cl(Q) are called 'purespinors'. It must be entered as 's', that is, as an unevaluated name. Otherwise, an error message will appear if s has already been assigned some other basis monomial as a purespinor since basis mononials are protected in 'CLIFFORD'.

Procedure Kfield computes a basis for the ring K, while procedures spinorKbasis and spinorKrepr compute a K-basis in S = Cl(Q)f and a spinor representation of Cl(Q) in S, respectively.

For more information on symbolic computations in Clifford algebras, see [2] and [3].

Faithful matrix representations of simple and semi-simple Clifford algebras are stored in a library file and can be retrieved with the procedure clidata . Use procedure all_sigs to display signatures and basic structure of Clifford algebras in dimensions 1 through 9.

References:
[1] R. Ablamowicz, "Spinor representations of Clifford algebras: A symbolic approach", Computer Physics Communications Thematic Issue ‘‘Computer Algebra in Physics Research’’, Vol.
115 (1998), Numbers 2--3, pages 510--535.
[2] R. Ablamowicz, P. Lounesto, and J.M. Parra, eds., "Clifford Algebras with Numeric and Symbolic Computations", Birkhauser, Boston, 1996.
[3] R. Ablamowicz and P. Lounesto, "On Clifford algebras of a bilinear form with an antisymmetric part", in: R. Ablamowicz, P. Lounesto, and J.M. Parra, eds., "On Clifford Algebras with Numeric and Symbolic Computations", Birkhauser, Boston, 1996, page 167--188.
[4] P. Lounesto, "Scalar products of spinors and an extension of Brauer-Wall groups", Foundations of Physics, Vol.
11 , Nos. 9/10 (1981) pages 721--740.

Examples:

> restart:with(Cliff5):with(linalg):

Warning, new definition for norm

Warning, new definition for trace

Let's display signatures of simple and semi-simple Clifford algebras in dimensions 1 through 9 which are isomorphic to rings of matrices over R and over the double real field R+R, respectively:

> all_sigs(1..9,'real','simple');

[Maple Math]

> all_sigs(1..9,'real','semisimple');

[Maple Math]

Let's display signatures of simple Clifford algebras in dimensions 1 through 9 which are isomorphic to rings of matrices over the complex field C. There are no semi-simple algebras in this case:

> all_sigs(1..9,'complex','simple');

[Maple Math]

> all_sigs(1..9,'complex','semisimple');

[Maple Math]

Let's display signatures of simple and semi-simple Clifford algebras in dimensions 1 through 9 which are isomorphic to rings of matrices over quaternions H and over the double quaternionic field H+H, respectively:

> all_sigs(1..9,'quat','simple');

[Maple Math]

> all_sigs(1..9,'quat','semisimple');

[Maple Math]

More information about any Clifford algebra Cl(Q) of the quadratic form of signature (p,q), 1<= p+q <= 9, can be displayed using procedure clidata as follows:

> clidata([2,0]); #Clifford algebra of the Ecuclidean plane R^2

[Maple Math]

> clidata([3,0]); #Clifford algebra of the Ecuclidean space R^3

[Maple Math]

> clidata([1,3]); #Clifford algebra of the Minkowski space

[Maple Math]

> clidata([3,1]); #Clifford algebra of the Minkowski space

[Maple Math]

>

In order to view matrices representing 1-vectors {e1,e2,e3,..., en} in Cl(V,Q), dim V = n, use procedure matKrepr . For example, let's see matrices for the above-listed algebras and for the semi-simple algebra Cl(Cl(2,1) = Mat(2,2,R+R). These last matrices, with entries in the double field R+R are of `type/dfmatrix` and have been precomputed.

> matKrepr([2,0]);

[Maple Math]

> matKrepr([3,0]); #Pauli matrices

[Maple Math]

> matKrepr([1,3]);

[Maple Math]

> matKrepr([3,1]); #Dirac matrices

[Maple Math]

> matKrepr([2,1]);

[Maple Math]


For more information how to find spinor representations in higher dimensions, see help pages for
Kfield , gradeinv , marKrepr , minimalideal , spinorKbasis , spinorKrepr . See also cbasis , clidata , `type/primitiveidemp` , `type/idempotent` .

>

Example 1: Let's compute the two bilinear forms beta_{+} and beta_{-} on S = Cl(Q)f where Cl(Q)=Cl(3,0) is the Clifford algebra of the Euclidean space R^3. To shorten output, procedure makealiases is used.

> restart:with(Cliff5):with(linalg):
B:=diag(1,1,1); #define the diagonal form B for Cl(3,0)

Warning, new definition for norm

Warning, new definition for trace

[Maple Math]

> dim:=coldim(B):eval(makealiases(dim)):

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> for i from 1 to nops(data[7]) do f.i:=data[7][i] &c f od;

[Maple Math]

[Maple Math]

> Kbasis:=data[6]; #here K = C

[Maple Math]

Let's define arbitrary (complex) spinor coefficients psi1, psi2, phi1, and phi2 for two spinors 'psi' and 'phi' in S = Cl(Q)f = C^2. Notice, that psi1, psi2, phi1, and phi2 belong to a subalgebra K of Cl(Q) spanned by {Id, e2we3} that is isomorphic to C since (e2we3)^2 = -Id. Recall also that the left minimal ideal S = Cl(D)f is a RIGHT K-module. That's why the 'complex' coefficients must be written on the RIGHT of the spinor basis elements f1 and f2 in S:

> psi1:=psi11 * Id + psi12 * e23;psi2:=psi21 * Id + psi22 * e23; #entries in K

[Maple Math]

[Maple Math]

> phi1:=phi11 * Id + phi12 * e23;phi2:=phi21 * Id + phi22 * e23; #entries in K

[Maple Math]

[Maple Math]

> psi:='f1 &c psi1' + 'f2 &c psi2'; #here psi1 ... are 'complex' components of psi
phi:='f1 &c phi1' + 'f2 &c phi2'; #here phi1 ... are 'complex' components of phi

[Maple Math]

[Maple Math]

>

Now, we compute beta_{+} on 'psi' and 'phi', while we store the purespinor under the name 'purespinor1'. Notice, that beta_{+} is invariant under the unitary group U(2) (for more information see [1], [4]).

> x:=beta_plus(psi,phi,f,'purespinor1');purespinor1; #beta_plus is invariant under U(2)

[Maple Math]

[Maple Math]

> psi1c:=reversion(psi1);psi2c:=reversion(psi2);

[Maple Math]

[Maple Math]

> clicollect(psi1c &c phi1 + psi2c &c phi2); #this equals x and is invariant under U(2)

[Maple Math]

>

Now, we compute beta_{-} on 'psi' and 'phi', while we store the purespinor under the name 'purespinor2'. Notice, that beta_{-} is invariant under the complex symplectic group Sp(2,C) (for more information see [1], [4]).

> y:=beta_minus(psi,phi,f,'purespinor2');purespinor2; #beta_minus is invariant under Sp(2,C)

[Maple Math]

[Maple Math]

> clicollect(psi1 &c phi2 - psi2 &c phi1); #this equals y and is invariant under Sp(2,C)

[Maple Math]

>

Observe that 'purespinor1' and 'purespinor2' have the desired commuting properties with the idempotent f:

> u:=purespinor1; f &c u - u &c reversion(f);

[Maple Math]

[Maple Math]

> u:=purespinor2; f &c u - u &c conjugation(f);

[Maple Math]

[Maple Math]

Testing error message since K = span{Id, e23} <> R:

> f1:=1/2*Id+1/2*e2;

[Maple Math]

> type(f1,primitiveidemp);

[Maple Math]

> beta_plus(psi,phi,f1);

Error, (in beta_plus) in complex K = C and quaternionic K = H cases, primitive idempotent must be plus/minus of clidata(B)[4] or its grade involution

> beta_minus(psi,phi,f1);

Error, (in beta_minus) in complex K = C and quaternionic K = H cases, primitive idempotent must be plus/minus of clidata(B)[4] or its grade involution

The error message is returned due to the fact that in the case when K = C or K = H, the only flexibility in these two procedures in accepting a different primitive idempotent 'f ' than the one stored under clidata(B)[4] is that 'f' must equal plus or minus the stored idempotent, or its grade involution. In the real case when K = R, this doesn't matter and the user can enter any primitive idempotent.

> f:=clidata(B)[4];

[Maple Math]

> evalb(f1=f),evalb(f1=-f),evalb(f1=gradeinv(f)),evalb(f1=-gradeinv(f));

[Maple Math]

This requirement has to do with the fact that both procedures beta_{+} and beta_{-} use pre-computed basis for K which contains two or four elements depending whether K = C or K = H. Certainly, this basis depends on the choice of the idempotent! In general, such basis for K can be computed for any primitive idempotent f with the procedure Kbasis .

> 'K'=clidata()[6];

[Maple Math]

>

Example 2: Scalar products of spinors of the Clifford algebra Cl(1,3) that is isomorphic to H(2).

> restart:with(Cliff5):with(linalg):
B:=linalg[diag](1,-1,-1,-1): #define the bilinear form B for Cl(1,3)

Warning, new definition for norm

Warning, new definition for trace

> dim:=coldim(B):eval(makealiases(dim)):

> data:=clidata(B); #retrieve and display data about Cl(B)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

> for i from 1 to nops(data[7]) do f.i:=data[7][i] &c f od;

[Maple Math]

[Maple Math]

Elements f1 and f2 computed above give a K-basis in S = Cl(1,3)f where K = span{Id,e2,e3,e2we3} is a subalgebra of Cl(1,3) isomorphic with the quaternionic ring H. The elements spanning K are stored in data[6] displayed above. One can really check that these elements form a quaternionic basis and form a list of `type/genquatbasis` :

> Kbasis:=data[6]; #here K = H

[Maple Math]

> type(Kbasis,genquatbasis);

[Maple Math]

It is also possible to check it directly by computing all possible products and then displaying them in a matrix:

> M:=matrix(4,4,(i,j)->cmul(Kbasis[i],Kbasis[j]));

[Maple Math]

Like in the example above, we first define arbitrary quaternionic coefficients for two spinors 'psi' and 'phi' in S = Cl(1,3)f:

> psi1:=psi11 * Id + psi12 * e2 + psi13 * e3 + psi14 * e23;#first coefficient of psi in K
psi2:=psi21 * Id + psi22 * e2 + psi23 * e3 + psi24 * e23;#second coefficient of psi in K

[Maple Math]

[Maple Math]

> phi1:=phi11 * Id + phi12 * e2 + phi13 * e3 + phi14 * e23;#first coefficient of phi in K
phi2:=phi21 * Id + phi22 * e2 + phi23 * e3 + phi24 * e23;#second coefficient of phi in K

[Maple Math]

[Maple Math]

Now, we define spinors 'psi' and 'phi':

> psi:='f1 &c psi1' + 'f2 &c psi2'; #here psi1 ... are quaternionic components of psi
phi:='f1 &c phi1' + 'f2 &c phi2'; #here phi1 ... are quaternionic components of phi

[Maple Math]

[Maple Math]

The beta_{+} and the beta_{-} forms on S x S are invariant under the symplectic group Sp(2,2) as can be checked directly from the output below:

> x:=beta_plus(psi,phi,f,'purespinor1');purespinor1; #beta_plus is invariant under Sp(2,2)

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

[Maple Math]

> y:=beta_minus(psi,phi,f,'purespinor2');purespinor2; #beta_minus is invariant under Sp(2,2)

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

[Maple Math]

>

Example 3: Let's compute the two bilinear forms beta_{+} and beta_{-} on S = Cl(Q)f where Cl(Q)=Cl(2,3) (complexification of Cl(1,3)) is the Clifford algebra of the de Sitter space of signature (2,3). Cl(2,3) is isomorphic to C(4) and is a complexification of Cl(1,3).

> restart:with(Cliff5):dim:=5:eval(makealiases(dim)):

> B:=linalg[diag](1,1,-1,-1,-1):#define form B for Cl(2,3)

> data:=clidata(B); #retrieve and display data about Cl(2,3)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

Here are the matrices representing basis 1-monomials of Cl(2,3):

> matKrepr(Bsignature());

[Maple Math]

for i from 1 to 4 do f.i:=data[7][i] &c f od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Thus, a spinor psi from S=Cl(2,3)f is a four component vector with real entries. It can be written in terms of the basis [f1,f2,f3,f4] and its complex entries in K = <Id>_R +<e3>_R as follows:

> psi1:=psi11+psi12*e3:psi2:=psi21+psi22*e3:psi3:=psi31+psi32*e3:psi4:=psi41+psi42*e3:

> phi1:=phi11+phi12*e3:phi2:=phi21+phi22*e3:phi3:=phi31+phi32*e3:phi4:=phi41+phi42*e3:

Let's define now arbitrary spinors 'psi' and 'phi' in S considered as the RIGHT K-module:

> psi:='f1 &c psi1' + 'f2 &c psi2' + 'f3 &c psi3' + 'f4 &c psi4';
phi:='f1 &c phi1' + 'f2 &c phi2' + 'f3 &c phi3' + 'f4 &c phi4';

[Maple Math]

[Maple Math]

The two scalat forms beta_{+} and beta_{-} are:

> x:=beta_plus(psi,phi,f,'s1');s1; #beta_plus is invariant under Sp(4,C)

[Maple Math]
[Maple Math]

[Maple Math]

> y:=beta_minus(psi,phi,f,'s2');s2; #beta_minus is invariant under U(2,2)

[Maple Math]
[Maple Math]

[Maple Math]

We can verify that the automorphism group of beta_{-} is U(2,2) as follows:

> psi1c:=gradeinv(psi1):psi2c:=gradeinv(psi2):psi3c:=gradeinv(psi3):psi4c:=gradeinv(psi4):

> y1:=clicollect(cmul(psi4c,phi1)+cmul(psi2c,phi3)-cmul(psi3c,phi2)-cmul(psi1c,phi4));

[Maple Math]
[Maple Math]

> simplify(y1-y);

[Maple Math]

>

Example 4: Scalar products in the spinor spaces of the Clifford algebra Cl(3,1), that is isomorphic to R(4), are both invariant under the symplectic group Sp(4).

> restart:with(Cliff5):dim:=4:eval(makealiases(dim)):

> B:=linalg[diag](1,1,1,-1):#define form B for Cl(3,1)

> data:=clidata(B); #retrieve and display data about Cl(3,1)

[Maple Math]

> f:=data[4]:#assign pre-stored idempotent to f or use your own here

Here are the matrices representing some basis monomials of Cl(B). Those that represent the 1-vectors are usually referred to as Dirac gamma matrices (since 'gamma' is a protected Maple name, we will use here 'g' instead):

> matKrepr(Bsignature());

[Maple Math]

Let's find matrices representing the four basis vectors in S:

> for i from 1 to 4 do f.i:=data[7][i] &c f od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Thus, a spinor psi from S=Cl(3,1)f is a four component vector with real entries. It can be written in terms of the basis [f1,f2,f3,f4] and its real entries in K = <Id>_R as follows:

> psi:= psi1 * 'f1' + psi2 * 'f2' + psi3 * 'f3' + psi4 * 'f4';
phi:= phi1 * 'f1' + phi2 * 'f2' + phi3 * 'f3' + phi4 * 'f4';

[Maple Math]

[Maple Math]

> x:=beta_plus(psi,phi,f,'s1');s1; #automorphism group of beta_plus is Sp(4,R)

[Maple Math]

[Maple Math]

> y:=beta_minus(psi,phi,f,'s2');s2; #automorphism group of beta_minus is Sp(4,R)

[Maple Math]

[Maple Math]

Since the coefficients of 'psi' and 'phi' are here assumed to be real, it doesn't matter that they were written on the left side of the basis elements [f1,f2,f3,f4].

>

Example 5: Let's consider finally the semi-simple case of Cl(2,1) = Mat(2,R) + Mat(2,R). Here, we will have to deal with pairs of spinor spinor spaces S and S^ where S^ is a spinor space of spinors of the form gradeinv(psi) where gradeinv is the grade involution in Cl(2,1) and 'psi' is a spinor from S = Cl(1,2)f.

> restart:with(Cliff5):with(linalg):_shortcut_in_spinorKrepr:=false:

Warning, new definition for norm

Warning, new definition for trace

> B:=diag(1$2,-1$1):dim:=coldim(B):eval(makealiases(dim)):clibasis:=cbasis(dim):

Display information stored:

> matKrepr(Bsignature());

[Maple Math]

> data:=clidata();f:=data[4];

[Maple Math]

[Maple Math]

We will need now one spinot basis for S and for S^:

> K_basis1:=[seq(data[7][i] &c f,i=1..nops(data[7]))];#spinor basis in S
K_basis2:=map(gradeinv,K_basis1);#spinor basis in gradeinv(S) or S hat

[Maple Math]

[Maple Math]

> FBgens1:=data[6];FBgens2:=map(gradeinv,FBgens1);#generators for K and K hat

[Maple Math]

[Maple Math]

Although the basis elements e1, e2, e3 already have their matrices with entries in R+R pre-computed and displayed above, we show how they were computed. First, we need to find pairs of matrices representing e1, e2, and e3 respectively

> for i from 1 to dim do
M[i],N[i]:=spinorKrepr(e.i,K_basis1,FBgens1,'left'),spinorKrepr(e.i,K_basis2,FBgens2,'left');
od;

[Maple Math]

[Maple Math]

[Maple Math]

By combining them pairwise, we get matrices representing faithfully e1, e2, and e3 in Mat(2,2,R+R). This operation can be done with cdfmatrix :

> E[1]:=cdfmatrix(M[1],N[1]); #matrix for e1

[Maple Math]

> E[2]:=cdfmatrix(M[2],N[2]); #matrix for e2

[Maple Math]

> E[3]:=cdfmatrix(M[3],N[3]); #matrix for e3

[Maple Math]

Notice that these matrices observe appropriate commutation relations:

> mdfmatrix(E[1],E[1]); #square of E[1] or e1

[Maple Math]

> mdfmatrix(E[2],E[2]); #square of E[2] or e2

[Maple Math]

> mdfmatrix(E[3],E[3]); #square of E[3] or e3

[Maple Math]

> adfmatrix(mdfmatrix(E[1],E[2]),mdfmatrix(E[2],E[1])); #product cmul(e1,e2)+cmul(e2,e1)

[Maple Math]

> adfmatrix(mdfmatrix(E[1],E[3]),mdfmatrix(E[3],E[1])); #product cmul(e1,e3)+cmul(e3,e1)

[Maple Math]

> adfmatrix(mdfmatrix(E[2],E[3]),mdfmatrix(E[3],E[2])); #product cmul(e2,e3)+cmul(e3,e2)

[Maple Math]

>

Let's make assignment of the basis elements for S and S^:

> f1:=K_basis1[1];f2:=K_basis1[2]; #basis in S

[Maple Math]

[Maple Math]

> g1:=K_basis2[1];g2:=-K_basis2[2]; #basis in S hat

[Maple Math]

[Maple Math]

That is, S = span{f1,f2} and S^ = span{g1,g2}. Thus, spinors in S = Cl(Q)f = R^2 can be displayed as follows:

> psi:='f1' &c (psi1 &c Id) + 'f2' &c (psi2 &c Id);
phi:='f1' &c (phi1 &c Id) + 'f2' &c (phi2 &c Id);

[Maple Math]

[Maple Math]

The matrix representation of 'psi' and 'phi' will then be:

> matKrepr(psi),matKrepr(phi);

[Maple Math]

The two scalar forms in S are then:

> beta_plus(psi,phi,f1,'s1');s1; #beta_plus is invariant under GL(2,R)

[Maple Math]

[Maple Math]

> beta_minus(psi,phi,f1,'s2');s2; #beta_minus is invariant under Sp(2,R)

[Maple Math]

[Maple Math]

Verification:

> out1:=clicollect(s2 &c conjugation(psi) &c phi &c f1);

[Maple Math]

> psiphi:=psi1*phi2-psi2*phi1;

[Maple Math]

> out2:=clicollect(expand(psiphi*f1));

[Maple Math]

> out1-out2;

[Maple Math]

Spinors in S^ = (Cl(Q)f)^ = R^2 can be displayed as follows::

> psi:='g1' &c (psi1 &c Id) + 'g2' &c (psi2 &c Id);
phi:='g1' &c (phi1 &c Id) + 'g2' &c (phi2 &c Id);

[Maple Math]

[Maple Math]

> matKrepr(psi),matKrepr(phi);

[Maple Math]

>

The scalar forms then are:

> beta_plus(psi,phi,g1); #beta_plus is invariant under GL(2,R)

[Maple Math]

> beta_minus(psi,phi,g1,'s'); #invariant under Sp(2,R)

[Maple Math]

Verification:

> s; #purespinor

[Maple Math]

> out1:=clicollect(s &c conjugation(psi) &c phi &c g1); #all in S hat

[Maple Math]

> out2:=clicollect(expand(psiphi*g1));

[Maple Math]

> out1-out2;

[Maple Math]

>

See Also: Cliff5[`type/dfmatrix`] , Cliff5[ddfmatrix] , Cliff5[cdfmatrix]

(c) Copyright October 8, 1995, by Rafal Ablamowicz & Bertfried Fauser, all rights reserved.
Last modified: December 26, 2001, RA/BF.