xAct`Spinors`

This is the doc file SpinorsDoc.nb of version 1.0.5 of Spinors`. Last update on 15 February 2014.

Web:   http://www.xact.es/Spinors/
     https://github.com/xAct-contrib/Spinors
Article:   Spinors: A Mathematica package for doing spinor calculus in General Relativity, Comp. Phys. Commun. 183 (2012) 2214-2225, arXiv: 1110.2662 [gr-qc].

© 2006-2018, under the GNU General Public License (GPL)
     Alfonso García-Parrado Gómez-Lobo
	Centro de Matematica
	Universidade do Minho, Portugal
	alfonso@math.uminho.pt
     and
     José M. Martín-García
	jose@xact.es
	http://www.xact.es/

Spinors` is the xAct` package for computations with spinors in four dimensional Lorentzian manifolds. The conventions adopted in the standard formulae of the spinor calculus are those of Penrose & Rindler, Spinors and Space-Time, Cambridge University Press (Vols. 1, 2). We assume that the user is already familiar with spinor calculus and therefore we will not explain the terminology or symbols related to this subject unless necessary to clarify the workings of the package.

This loads the package from the default directory, for example $Home/.Mathematica/Applications/xAct/ for a single-user installation under Linux.

MemoryInUse[]

<<xAct`Spinors`

Comparing, we see that all packages take about 20 Mb  in Mathematica 9.0:

MemoryInUse[]

(Out[3]-Out[1])/2^20//N

There are several contexts: xAct`Spinors`, xAct`xTensor`, xAct`xPerm` and xAct`xCore` contain the respective reserved words. System` contains Mathematica's reserved words.  The current context Global` will contain your definitions and right now is empty.

$ContextPath

Context[]

?Global`*

Spinors are elements of a complex vector bundle (spin bundle) whose base space is a four dimensional Lorentzian manifold (spacetime). Therefore we need to define first a four dimensional differentiable manifold and a Lorentzian metric, which will be kept fixed in all this notebook. See xTensor` doc file for details about how to carry this out. Note also that all the tools and notation developed in xAct` to work with generic complex vector bundles apply in the particular case of a spin bundle, so the user will be assumed familiar with them. We refer again to the  xTensor` doc file for detailed documentation about this point.

Definition of a four dimensional  manifold M4:

DefManifold[M4,4,{a,b,c,d,f,p,q,r,m,l,h,j,n,t,s}]

Definition of a Lorentzian metric on the manifold, with signature having +1 once, -1 thrice and zero times 0:

DefMetric[{1,3,0},g[-a,-b],CD]

The command DefSpinStructure defines a complex spin bundle named Spin comprising the spin metric ϵ[-A,-B], the soldering form σ[a,-A,-A†]and the extension of the Levi-Civita covariant derivative CD to the unique covariant derivative CDe which is compatible with the soldering form and the spin metric (spin covariant derivative).  The option SpinorPrefix is used to introduce a tag which will be prepended automatically to  any spinor related to a spacetime tensor.

DefSpinStructure[g,Spin,{A,B,C,D,F,H,L,P,Q},ϵ,σ,CDe,SpinorPrefix->SP]

When a spin structure is defined, several new objects are defined automatically. These are the spinor equivalents of the Riemann, the Ricci, the traceless Ricci and the Weyl tensors. Note the character σ prepended to each head in the output . This is the default output form of the tag mentioned above. This output form can be changed with the option SpinorMark in the command DefSpinStructure.

{SP⎵RiemannCD[-A,-A†,-B,-B†,-C,-C†,-F,-F†],SP⎵RicciCD[-A,-A†,-B,-B†],SP⎵TFRicciCD[-A,-A†,-B,-B†],SP⎵WeylCD[-A,-A†,-B,-B†,-C,-C†,-F,-F†]}

The curvature spinors are also automatically defined.

{ChiCDe[-A,-B,-C,-D],PhiCDe[-A,-B,-A†,-B†]}

Each of the above spinors can be decomposed into irreducible parts by means of the command Decomposition.  Let us see some examples.

Decomposition[SP⎵RiemannCD[-A,-A†,-B,-B†,-C,-C†,-D,-D†]]

The decomposition of the spinor equivalent of the Ricci tensor is

Decomposition[SP⎵RicciCD[-A,-A†,-B,-B†]]

The decomposition of the spinor equivalent of the Weyl tensor is

Decomposition[SP⎵WeylCD[-A,-A†,-B,-B†,-C,-C†,-D,-D†]]

The inner curvature of the spin bundle can be also decomposed according to standard rules .

Decomposition[SP⎵FRiemannCDe[-A,-A†,-B,-B†,-C,-D]]

Decomposition[%,Chi]

ChiCDe[-A,-B,-C,-D]

Decomposition[%,Chi]

Spinors` is able to work with the 2-index derivatives used in spinor calculus.

CDe[-F,-F†]@PsiCDe[-A,-B,-C,-D]

As is well-known this is nothing but a shorthand for

SeparateSolderingForm[][%,CDe]

We can also transform one-index covariant derivatives back into their two index form by means of the soldering form.

CDe[-b]@PsiCDe[-A,-B,-C,-D]

PutSolderingForm@%

ContractSolderingForm@%

Spinors are defined using the command DefSpinor, which is nothing but a renaming of standard xAct` command DefTensor (by default the option Dagger->Complex is assumed).

DefSpinor[κ[-A,-A†],M4]

In this case the spinor just defined can be related to a tensor in the spacetime tangent bundle.  This vector is given by

PutSolderingForm[κ[-A,-A†]]

The soldering form can be absorbed into the spinor κ. In this case a new tensor is automatically defined.

ContractSolderingForm[%]

The original spinor may be also recovered from (Subscript[σκ, a]^( )).

PutSolderingForm[%]

ContractSolderingForm[%]

An interesting feature is the possibility of working with Hermitian spinors. These are defined by supplying the option Dagger->Hermitian to DefSpinor.

DefSpinor[μ[-A,-A†,-B,-B†],M4,Dagger->Hermitian]

We check that the new spinor μ is hermitian.

μ[-A,-A†,-B,-B†]//Dagger

Any Hermitian spinor has a tensor counterpart which is real. We compute the tensor counterpart of μ and check that the result is a real rank-2 spacetime tensor.

%//PutSolderingForm//ContractSolderingForm

%//Dagger

The  xAct` command ContractMetric is aware of the standard index raising and lowering conventions for the spinor indices and therefore it can act on spinor expressions without further options. We present some examples:

DefSpinor[ξ[A],M4]

We consider the following list of quantities.

{ξ[-B]ϵ[A,B],ξ[B]ϵ[-B,-A],ϵ†[C†,A†]CDe[-A,-A†]@ξ[-B]}

ContractMetric/@%

The same goes for the remaining xAct` commands. For example ToCanonical takes into account the "see-saw" rule when canonicalising spinor expressions and adds the suitable signs.  Also it works with any kind of spinor expression without any further option. To see this let us canonicalise the following list of spinor expressions.

{ξ[A]ξ[-A],κ[-A,-B†]ξ†[B†],CDe[-F,-F†]@CDe[-A,F†]@PsiCDe[-B,-C,-D,-P]+CDe[-F,F†]@CDe[-A,-F†]@PsiCDe[-B,-C,-D,-P]}

ToCanonical/@%

A spin structure can be undefined and all its dependent symbols are thus removed from the session. To accomplish this we remove first all the visitors of the soldering form σ:

Undef/@VisitorsOf[σ];

and all the objects defined on the Spin vbundle :

VisitorsOf@Spin

Undef/@{κ,ξ,μ};

Finally the spin structure and all its dependent objects are removed.

UndefSpinStructure[σ]

Now, we are only left with spacetime quantities.

$Tensors

In our present context we need the following ingredients to introduce a spin structure on a Lorentzian manifold: a 2-dimensional complex vector bundle (the spin bundle), the antisymmetric spin metric and the soldering form. This last quantity is a mixed object having indices in the spin bundle and the tangent bundle and serves to relate space-time quantities to spinor quantities and back (see e. g. appendix A of A. Ashtekar Lectures on non-perturbative canonical gravity World Scientific, Singapore, 1991). The explicit components of the soldering form in a basis are known as the Infeld-Van der Waerden symbols. It can be shown that there exists a unique covariant derivative (spin covariant derivative) which is compatible with both the spin metric and the soldering form. The restriction of the spin covariant derivative to tensors defined on the tangent bundle coincides with the Levi-Civita covariant derivative.

It is possible to introduce a spin structure both in a spacetime with or without torsion. We separate those two cases:

To define a spin structure we need first a four dimensional Lorentzian manifold

{$Manifolds,$Metrics,DimOfManifold/@$Manifolds}

We define a spin structure comprising the complex vector bundle Spin whose abstract indices are {A, B, C, D, F, H, L, P, Q}. We need to supply as arguments the name of the metric tensor of the background Lorentzian manifold g[-a,-b], the name of the antisymmetric spin metric ϵ[-A,-B], the name of the soldering form σ[a,-A,-A†] and the name of the spin covariant derivative CDe[-a].The option SpinorPrefix is used to introduce a tag which will be  prepended automatically to  any spinor related to a spacetime tensor and the option SpinorMark introduces a formatting of the tag SP different to the default one. The long output of DefSpinStructure can be suppressed  by adding the option Info->False which deactivates the information of the definition commands .

DefSpinStructure[g,Spin,{A,B,C,D,F,H,L,P,Q},ϵ,σ,CDe,SpinorPrefix->SP,SpinorMark->"S",DefInfo->False]

We choose a formatting for the "primed" spinor indices according to the standard conventions used in the literature.

{PrintAs[A†]^="A'",PrintAs[B†]^="B'",PrintAs[C†]^="C'",PrintAs[D†]^="D'",PrintAs[F†]^="F'",PrintAs[H†]^="H'",PrintAs[L†]^="L'",PrintAs[M†]^="M'",PrintAs[P†]^="P'",PrintAs[Q†]^="Q'",PrintAs[ϵ†]^="(Overscript[ϵ, __])"};

By convention we choose the  symbol σ as the representative of all the elements which comprise the spin structure. Hence it will sometimes be referred to as "the spin structure". In particular this means that it is the host of the spinor counterparts of the metric tensor, the volume element and all the curvature spinors associated to the covariant derivative CDe .

VisitorsOf@σ

The set of soldering forms is kept in the global variable $SolderingForms.

$SolderingForms

All the essential algebraic properties of the soldering form are included as automatic rules. Example:

{σ[a,-A,-A†]σ[-a,-B,-B†],σ[-a,A,A†]σ[-b,-A,-A†]}

It is possible to define a second spin structure on the manifold M4.

DefSpinStructure[g,Spin2,{α,β,γ,δ,μ,ν},ϵ2,σ2,CDe2,SpinorPrefix->SP2,SpinorMark->"S2",DefInfo->False]

$SolderingForms

If we have more than one spin structure in the session then we need to specify which one are we working with in some of the Spinors` commands. Otherwise it is automatically assumed that we work with the default spin structure which is the first element of the list $SolderingForms.Examples:

RiemannCD[-a,-b,-c,-d]

PutSolderingForm[%,IndicesOf[],σ2]

ContractSolderingForm@%

Decomposition[%]

RiemannCD[-a,-b,-c,-d]

SeparateSolderingForm[σ2][%]

PutSolderingForm[%,IndicesOf[],σ2]

We remove the spin structure σ2. As usual, we start with the visitors of σ2 and then we proceed to erase the spin structure itself.

Undef/@VisitorsOf@σ2;

UndefSpinStructure@σ2

It is possible to define a spin structure on a spacetime in which the connection compatible with the metric tensor is assumed to have torsion. In this section we illustrate this.

We need to define a new 4-dimensional manifold and a new metric. Note the non-standard symmetry properties of the curvature tensors:

DefManifold[MT,4,{α,β,γ,δ,μ,ν,ρ,λ}]

DefMetric[{1,3,0},G[-α,-β],cd,Torsion->True]

Definition of the spin structure

DefSpinStructure[G,SpinT,{𝒜,ℬ,𝒞,𝒟,ℱ,𝒢,ℋ,ℳ},ℰ,Σ,cde,SpinorPrefix->S]

This is the torsion tensor.

Torsioncd[α,-β,-γ]

We compute next the spinor equivalent of the torsion.

PutSolderingForm[%,IndexList[α,-β,-γ],Σ]

ContractSolderingForm@%

This can be decomposed as follows.

Decomposition[%]

ContractMetric@%

The spinor (Subscript[Ω[▽],    ℬ𝒞]^(𝒜†𝒜  )) is called the "torsion spinor" of the covariant derivative. It is symmetric in the last pair of indices.

SymmetryGroupOfTensor@Omegacde

That spinor appears in all standard expressions involving the torsion. Let us see an example:

DefSpinor[T[𝒜],MT]

This is the spinor form of the Ricci identity associated to the covariant derivative cde. As is well known this spinor form contains the "box operator" whose expansion contains explicitly the torsion spinor.

Boxcde[-𝒜,-ℬ]@T[𝒞]

BoxToCurvature[%,Boxcde]

We remove all the symbols used in this subsection.

Undef/@VisitorsOf@Σ;

Undef/@VisitorsOf@SpinT;

UndefSpinStructure@Σ

UndefMetric@G

UndefManifold@MT

$Manifolds

Being able to transform spinor expressions into tensor ones and back is an important issue. Sometimes this is a trivial task but there are cases in which more efforts are required.  Spinors` has a complete suite of commands which enable us to handle any case as we show below.

When transforming a spinor expression into a tensor one (or vice-versa) we may need to insert or eliminate a number of soldering forms.  Spinors`  provides commands to perform this task in an efficient fashion.

Simple application: we start with the Riemann tensor and finish with its spinor counterpart

RiemannCD[-a,-b,-c,-d]

PutSolderingForm@%

ContractSolderingForm@%

We can now follow previous procedure backwards and end up in the spacetime Riemann tensor.

SeparateSolderingForm[σ][%]

PutSolderingForm@%

Sometimes intermediate objects need to be created  in a computation like the one just shown. This is done by the system in an automatic way.

DefTensor[M[-a,-b],M4]

PutSolderingForm@M[-a,-b]

Here, the contraction of the soldering forms results in the spinor counterpart of the tensor M[-a, -b]. The former has not been defined previously and thus the system must introduce this new object (a message informing about this is issued). The definition of spinor counterparts of tensor objects can be performed by the user independently (see next section).

ContractSolderingForm@%

The separation of the soldering form gets us back to the original tensor (Subscript[M, ab]^(  )).

SeparateSolderingForm[]@%

PutSolderingForm@%

The spinors SP⎵M and SP⎵M† are visitors of M. Therefore if we wish to remove M, we need to remove first its visitors.

Undef/@VisitorsOf@M;

UndefTensor@M

There are cases in which we need to tell explicitly how the indices of the soldering forms should be contracted when they act on an expression.  This is achieved by means of extra options in the commands just ilustrated.

Consider an expression containing spacetime and spinor indices.

expr=CDe[-A,-A†]@FRiemannCDe[-a,-b,-C,-D]

By default SeparateSolderingForm will extract soldering forms from all the tensor indices and all the complex conjugated pairs of spinor indices.

SeparateSolderingForm[σ][expr]

We may control with extra options the vector bundles whose indices will be pulled out by SeparateSolderingForm.

SeparateSolderingForm[σ][expr,Spin]

SeparateSolderingForm[σ][expr,TangentM4]

A similar index-selection is also available for PutSolderingForm.

PutSolderingForm[expr,Spin]

PutSolderingForm[expr,TangentM4]

The following expression is the spinor form of a tensor (Bel-Robinson tensor). If we wish to use PutSolderingForm to find its tensor equivalent we need to pass an argument stating how the spinor indices are grouped into tensor ones as there is not a unique way of doing it.  This is achieved by means of the head  Pair which represents conjugated pairs of spinor indices.

PsiCDe[-A,-B,-C,-D]Dagger[PsiCDe[-A,-B,-C,-D]]

PutSolderingForm[%,{Pair[-A,-A†],Pair[-B,-B†],Pair[-C,-C†],Pair[-D,-D†]}]

There are spinors which can be put into relation with tensors and tensors which can be put into relation with spinors. In both cases the relation is carried out by means of the soldering form. Whenever one of these relations apply, Spinors` enables the user to define the spinor (resp. tensor) counterpart of a tensor (resp. spinor).

Let us define a spinor.

DefSpinor[κ[-A,-A†],M4]

This spinor has a tensor counterpart. To introduce it into the session we use the command DefTensorOfSpinor in the following way:

DefTensorOfSpinor[KT[a],κ[A,A†],σ]

The output form of the tensor is actually constructed from that of the spinor:

KT[a]

The symbol KT represents the tensor counterpart of the spinor κ.This must be a symbol which does not correspond to any object defined previously in the session.  From this point on, the system stores  KT as the tensor counterpart of  κ. Any of the commands which relate spinors to tensors are now aware of this binding between κ and KT.Let us see some examples:

TensorOfSpinor[κ,σ]

We start from the spinor (Subscript[κ, AA']^(   )) transform it into a tensor and then back to the same spinor all by using PutSolderingForm/ContractSolderingForm.

κ[-A,-A†]

PutSolderingForm[%]

ContractSolderingForm[%]

PutSolderingForm[%]

ContractSolderingForm[%]

Similarly we can introduce the spinor counterpart of any tensor already defined in the sesssion. For example:

DefTensor[T[-a,-b],M4,Dagger->Complex]

DefSpinorOfTensor[ST[-A,-A†,-B,-B†],T[-a,-b],σ]

As above the symbol ST should not correspond to any of the symbols defined previously in the session. Note carefully the index arrangement in the spinor  ST. This is fixed by convention and cannot be altered by the user. We will come back to this important point below.  For now we present some manipulation examples.

T[-a,-b]//PutSolderingForm

ContractSolderingForm[%]

T†[-a,-b]//PutSolderingForm

ContractSolderingForm[%]

PutSolderingForm[%]

ContractSolderingForm[%]

The above examples can be generalized to tensors and spinors with a higher number of indices with the following provision: in the commands DefSpinorOfTensor and DefTensorOfSpinor spinor indices must be always arranged according to the pattern index-Dagger[index]. Otherwise an error message is thrown.

DefSpinorOfTensor[TST[-A†,-A,-B†,-B],T[-a,-b],σ]

DefSpinor[Φ[-A,-B,-A†,-B†],M4]

DefTensorOfSpinor[ΦT[-a,-b],Φ[-A,-B,-A†,-B†],σ]

We undefine the objects used in this subsection. Note that whenever we wish to undefine a spinor (tensor) quantity with a tensor (spinor) counterpart we must erase first the latter, which is a visitor of the former.

UndefSpinor[Φ]

Undef/@VisitorsOf@T;

Undef[T]

Undef/@VisitorsOf@κ;

Undef[κ]

Contracted products of soldering forms appear in a natural way when transforming spinor expressions into tensor ones and back. Therefore it is important to be able to work with such products. In this subsection we show how Spinors` deals with such quantities.

The simplest case is the product of 2 soldering forms which gives rise to an auxiliary quantity which is needed when going from spinor expressions to tensor expressions.

σ[a,-A,-A†]σ[b,-B,A†]//ContractSolderingForm

The algebraic properties of  (Subscript[Σσ,   AB]^(ab  )) are stored as automatic rules.

Sigma[σ]

?Sigmaσ

One of the previous properties is that the "square" of (Subscript[Σσ,   AB]^(ab  )) gives rise to the "tetra-metric".  The latter is a four rank spacetime tensor which is defined in eq. (3.4.57) of vol. 1 of Penrose & Rindler (note that they use the name U for it, and that it has a different index configuration: U[a,b,c,d]==Tetra[a,d,b,c]).

Sigmaσ[-a,-b,-A,-B]Sigmaσ[-c,-d,A,B]//InputForm

This is the explicit definition of the tetra-metric:

Tetrag[-a,-b,-c,-d]/.TetraRule[g]

As we can see the tetra-metric only depends on spacetime quantities. Therefore the tetra-metric is always automatically defined whenever a Lorentzian four dimensional metric is introduced regardless to whether a spin structure has been defined. Also automatic rules implementing the algebraic properties of the tetra-metric are stored.

?Tetrag

A typical problem is the computation of a product of soldering forms with no free spinor indices. These always give rise to contracted products of tetra metrics. Let us see some examples.

σ[a,-A,-B†]σ[b,C,B†]σ[c,-C,-D†]σ[d,A,D†]

%//ContractSolderingForm//ContractMetric

σ[a,-A,-B†]σ[b,C,B†]σ[c,-C,-D†]σ[d,P,D†]σ[f,-P,-Q†]σ[p,A,Q†]

%//ContractSolderingForm//ContractMetric

Expressions of the sort just found are frequent in computations involving the transformation of spinor expressions into tensor ones. Let us see an example

Transformation of the Weyl tensor into its spinor counterpart

weyl=WeylCD[-a,-b,-c,-d]

SeparateSolderingForm[][%]

Decomposition[%,Weyl]

This spinor expression can be transformed back into the Weyl tensor

weyl==ToCanonical[ContractMetric[%]]

We use this expression to write the Weyl spinor (Subscript[Ψ[▽], ABCD]^(    )) in terms of the Weyl tensor (Subscript[W[∇], abcd]^(    )).

Expand/@PutSolderingForm/@%

%/.-B†->A†/.-D†->C†

ToCanonical/@%

WeylSpinorToWeylTensor=IndexSolve[%,(Subscript[Ψ[▽], ABCD]^(    ))]

Now we can use previous rule to find the tensor expression of any invariant written in terms of the Weyl spinor. For example consider

expr=PsiCDe[-A,-B,-C,-D]PsiCDe[A,B,C,D]/.WeylSpinorToWeylTensor

A direct use of ContractSolderingForm would contract the soldering forms with the Weyl tensor, yielding an undesired result:

ContractSolderingForm@%

Instead we specify contraction of the indices on the soldering form which are dummies, generating a product of "tetra-metrics".

ContractSolderingForm[expr,IndicesOf[Dummy][expr]]

ToCanonical@ContractMetric@%

Finally we expand the tetra-metrics into ordinary metrics and volume elements. The simplification of the resulting expression provides the final answer.

%/.TetraRule[g]

ToCanonical@ContractMetric@%

Clean up :

Remove[expr]

A classical result of the spinor algebra is the posibility of decomposing any spinor into a sum which consists of a totally symmetric spinor of the same rank as the given spinor plus other terms which are outer products of the antisymmetric metric with totally symmetric spinors of lower rank (see proposition 3.3.54 of Penrose & Rindler vol. I for full details). In Spinors` there is an automated procedure to find such a decomposition as we explain below.

We show how IrreducibleDecomposition works by means of some simple examples. Let us start by defining a spinor

DefSpinor[Kh[-A,-B,-C,-D],M4,GenSet[Cycles[{-A,-B}],Cycles[{-C,-D}]],PrintAs->"K"]

The decomposition of the spinor just introduced into irreducible parts is given by

exprA=IrreducibleDecomposition[Kh[-A,B,-C,-D]]

The command IrreducibleDecomposition defines first the totally symmetric spinors intervening in the decomposition (irreducible spinors). The actual decomposition is found in a second step and displayed in the output. In order to represent the irreducible spinors, we introduce an indexed quantity with a variable number of slots (see the documentation of the package xTensor` for further details about this). Note the labels on each of the totally symmetric spinors: these are label indices which are used to distinguish each of the irreducible spinors. The pairs of numbers which appear inside the list indicate which slots of the tensor being decomposed have been picked to "pull out" factors of the antisymmetric metric.

This is the list of all the irreducible spinors resulting from the decomposition of Kh[-A, -B, -C, -D].

Cases[exprA,_TFKh,Infinity]

The symbol TF (trace free) is prepended to the symbol Kh.  All the quantities of the previous list which are not scalars are totally symmetric.

SymmetryGroupOfTensor/@%

The irreducible spinors are servants of the spinor they decompose. Therefore they are removed if the latter is erased.

UndefSpinor@Kh

Example of the decomposition of a mixed spinor.

IrreducibleDecomposition[SP⎵RicciCD[A,-A†,-B,-B†]]

Spinors`  includes the concept of spin-compatible covariant derivative. A covariant derivative is spin-compatible if it yields zero when acting upon a soldering form. The spin covariant derivative which extends the Levi-Civita covariant derivative is an example of it.

We define a covariant derivative which is spin-compatible with the soldering form σ. Note that the syntax of DefSpinCovD is similar to the xAct` command DefCovD used to define covariant derivatives.  We use non-standard symbols to denote the derivative:

DefSpinCovD[nb[-a],σ,SymbolOfCovD->{"|","D"},Torsion->True]

Several new objects are defined along with the covariant derivative. These are the same which are introduced by DefCovD plus the spinor equivalents of all the curvature quantities. By definition the compatibility of the covariant derivative nb with the spin structure associated to σ means that

nb[-a]@σ[b,-A,-A†]

Rules to decompose the curvature spinors into irreducible parts are also available. For example, let us compute the full decomposition of the spinor counterpart of the Riemann tensor of the covariant derivative nb in irreducible parts.

PutSolderingForm@Riemannnb[-a,-b,-c,-d]

ContractSolderingForm@%

Decomposition[SP⎵Riemannnb[-A,-A†,-B,-B†,-C,-C†,-D,-D†]]

Decomposition[%]

ToCanonical@%

Note that the curvature spinors associated to a generic spin-compatible covariant derivative do not have the same symmetries as those of the spin covariant derivative.

{{SymmetryGroupOfTensor@Chinb,SymmetryGroupOfTensor@ChiCDe},{SymmetryGroupOfTensor@Phinb,SymmetryGroupOfTensor@PhiCDe}}

There are also decomposition rules for the torsion spinor.

Torsionnb[a,-b,-c]==SeparateSolderingForm[]@Torsionnb[a,-b,-c]

PutSolderingForm/@%

Decomposition/@%

ContractMetric/@%

The covariant derivative nb can be manipulated in 2-index or in single index notation.

nb[-A,-A†]@Chinb[-C,-D,-F,-P]

SeparateSolderingForm[][%,nb]

PutSolderingForm@%

In postfix notation :

$CovDFormat="Postfix";

nb[-A,-A†]@Chinb[-C,-D,-F,-P]

$CovDFormat="Prefix";

The spinor expression of the Ricci identities of any spin-compatible covariant derivative is neatly rendered in terms of the box operator. This is a linear differential operator and  Spinors`  is able to work with it. The box operator is represented by the head BoxCovDname where the symbol CovDname represents the spin-compatible covariant derivative.

Action of the box  operator on a spinor and some simple manipulations involving it.

DefSpinor[ξ[-A],M4]

BoxCDe[-A,-B]@ξ[-C]

ϵ[A,B]BoxCDe[-A,-B]@ξ[-C]

ContractMetric@%

ToCanonical@%

The box operator can be expanded into spin covariant derivatives or into curvature spinors plus the torsion, according to known formulae (see eqs. (4.9.8)-(4.9.17) of Penrose & Rindler Vol. 2). Spinors has built-in rules to perform these expansions.

Examples of the expansion of the Box operator.

BoxCDe[-A,-B]@ξ[-C]

BoxToCovD[%,BoxCDe]

BoxToCurvature[%%,BoxCDe]

Similar computations for the box operator arising from the covariant derivative nb. Note the presence of an extra term due to the fact that the covariant derivative nb has torsion.

Boxnb[-A,-B]@ξ[-C]

BoxToCovD[%,Boxnb]

BoxToCurvature[%%,Boxnb]

Other computations involving the box operator.

BoxCDe[-A†,-B†]@ξ[-C]

BoxToCovD[%,BoxCDe]

BoxToCurvature[%%,BoxCDe]

BoxCDe[-A,-B]@PhiCDe[-C,-D,-C†,-D†]

BoxToCovD[%,BoxCDe]

BoxToCurvature[%%,BoxCDe]

We no longer need the spin-compatible covariant derivative nb :

UndefSpinCovD[nb]

Let us introduce a symmetric valence-2 spinor:

DefSpinor[κ[-A,-B],M4,Symmetric[{-A,-B}]];PrintAs@κ†^="(OverBar[κ])";

We will say that the spinor (Subscript[κ, AB]^(  ))  is a Killing spinor if the following differential condition is fulfilled.

ToCanonical@Symmetrize[3CDe[-C,-C†]@κ[-A,-B],{-A,-B,-C}]==0

KillingSpinorCondition=%;

Killing spinors have a number of applications. For example whenever a Killing spinor exists then automatically one can construct a conformal Killing-Yano tensor and a conformal Killing spinor in the spacetime which in turn lead to the existence of integration constants for the geodesic equations. These results were presented by M. Walker and R. Penrose in "On Quadratic First Integrals of the Geodesic Equations in {2,2} Spacetimes" Comm. Math. Phys. 18 265-274 (1970) and we will re-derive them with the aid of Spinors`.

The existence of a Killing spinor imposes restrictions on the Weyl spinor. To find them, we start by taking the derivative of the Killing spinor condition.

CDe[-F,C†]/@KillingSpinorCondition

We decompose each term of this sum into irreducible parts by making use of the "box operator".

%/.CDe[-F_,C†_]@CDe[-A_,-C†_]@κ[-B_,-C_]↦-BoxCDe[-F,-A]@κ[-B,-C]-1/2ϵ[-F,-A]CDe[-P,-C†]@CDe[P,C†]@κ[-B,-C]

The action of the box operator is computed next.

BoxToCurvature[#,BoxCDe]&/@%

We decompose the curvature spinor into irreducible parts.

Decomposition[%,Chi]

ToCanonical/@(ContractMetric/@%)

We are only interested in the symmetric part of this expression.

Symmetrize[#,{-B,-F,-A,-C}]&/@%;

ToCanonical/@(Times[#,2/3]&/@%)

We will refer to this condition as the Killing spinor integrability condition.

KSIntegrability=%;

This algebraic condition implies that the algebraic type of the Weyl spinor can be only D or N.

We are going to find the tensor representation of the Killing spinor condition. To that end we define an antisymmetric tensor and its spinor counterpart.

DefTensor[DF[-a,-b],M4,Antisymmetric[{-a,-b}],PrintAs->"D"]

DefSpinorOfTensor[DFs[-A,-A†,-B,-B†],DF[-a,-b],σ,PrintAs->"D"]

The spinor (Subscript[D, AA'BB']^(      )) is defined by the condition:

DFs[-A,-A†,-B,-B†]==κ[-A,-B]ϵ†[-A†,-B†]+Dagger[κ[-A,-B]ϵ†[-A†,-B†]]

This entails:

SeparateSolderingForm[σ]/@%

%/.-A†->B†

ToCanonical/@%

IndexSolve[%,κ[-A,-B]]

KillingSpinorToTensor=%;

We need to compute the complex conjugate of this rule

Dagger/@%%%

IndexSolve[%,κ†[-A†,-B†]]

KillingSpinorToTensor†=%;

We can now proceed to the computation of the spinor form of the Killing spinor condition. First of all, we need to have as many primed indices as unprimed ones and we achieve this by multiplying by (Subscript[(Overscript[ϵ, __]), A'B']^(    )) on both sides of the Killing spinor condition.

Times[#,ϵ†[-A†,-B†]]&/@KillingSpinorCondition

This can be now transformed into a tensor expression.

PutSolderingForm[#,{Pair[-A,-A†],Pair[-B,-B†],Pair[-C,-C†]},σ]&/@%

ToCanonical/@(ContractMetric/@%)

We replace (Subscript[κ, AB]^(  ))  by the expression in terms of (Subscript[D, df]^(  )) found above.

%/.KillingSpinorToTensor

We get rid of spinor indices in the covariant derivatives.

%/.CDe[-A_,-A†_]@DF[-a_,-b_]↦SeparateSolderingForm[σ][CDe[-A,-A†]@DF[-a,-b],IndexList[-A,-A†]]

Finally, we replace the product of soldering form by products of "tetra-metrics". This eliminates all the spinor indices.

MapAt[ContractSolderingForm[#,Spin]&,%,1]

All the quantities appearing in previous expression are tensorial, so we may replace the spin covariant derivative by the Levi-Civita covariant derivative.

%/.CDe->CD

%/.TetraRule@g

ToCanonical/@(ContractMetric/@%)

Simplification/@%

ScreenDollarIndices/@%

We split this expression into real and imaginary parts.

Re/@%

ComplexExpand/@%

%/.Im[_]->0/.Re->Identity

ToCanonical/@%

Symmetrize[#,{-c,-a}]&/@%

ToCanonical/@%

Times[#,2/3]&/@%

ToCanonical/@%

ConformalKillingYano=%;

CDDF=IndexSolve[ConformalKillingYano,CD[-c]@DF[-a,-b]]//Flatten

DefTensor[PK[-a,-b],M4,Symmetric[{-a,-b}],PrintAs->"P"]

DefSpinorOfTensor[PKS[-A,-A†,-B,-B†],PK[-a,-b],σ,PrintAs->"P"]

Consider the following quantity

PKS[-A,-A†,-B,-B†]==2κ[-A,-B]Dagger@κ[-A,-B]

SeparateSolderingForm[σ]/@%

We compute the tensor equivalent of this

PutSolderingForm[#,{Pair[-A,-A†],Pair[-B,-B†]},σ]&/@%

%/.KillingSpinorToTensor

%/.KillingSpinorToTensor†

ContractSolderingForm[#,σ]&/@%

%/.TetraRule@g

ToCanonical/@(ContractMetric/@%)

ExpandKillingTensor=%;

We check next that (Subscript[P, ab]^(  )) is indeed a conformal Killing tensor.

CD[-f]/@ExpandKillingTensor

ToCanonical/@(Symmetrize[#,{-a,-b,-f}]&/@%)

Simplification/@%

FullSimplify/@%

ScreenDollarIndices/@%

%/.CD[-a]@DF[-b,-c]->(CD[-a]@DF[-b,-c]/.CDDF)

%/.CD[-a]@DF[-f,-c]->(CD[-a]@DF[-f,-c]/.CDDF)

%/.CD[-b]@DF[-f,-c]->(CD[-b]@DF[-f,-c]/.CDDF)

ToCanonical/@(ContractMetric/@%)

Simplification/@%

Collect[#,g[-a_,-b_],Simplify]&/@%

We define the vector bundle which will contain the Dirac spinors. This is a direct sum of the vector bundles Spin and Spin†.

DefVBundle[SpinD,M4,{Spin,Spin†},{α,β,δ,ρ,λ,μ,ν},Dagger->Complex]

Extension of the Levi-Civita covariant derivative to the bundle SpinD.

DefCovD[CDd[-a],SpinD,ExtendedFrom->CD]

Definition of the Clifford algebra elements (gamma matrices)

DefTensor[γ[-a,-α,β],M4,Dagger->Complex]

The Clifford relation is

CliffordRelation=γ[-a,-ρ,λ]γ[-b,-λ,δ]+γ[-b,-ρ,λ]γ[-a,-λ,δ]==-2g[-a,-b]delta[-ρ,δ]

The representation of of the Clifford algebra on SpinD is reducible, Spin and Spin†  being invariant subspaces. This entails the relations

AutomaticRules[γ,MakeRule[{γ[-a,-A,B],0}]]

AutomaticRules[γ,MakeRule[{γ[-a,-A†,B†],0}]]

Unprotect@delta;

AutomaticRules[delta,MakeRule[{delta[-A,B†],0},MetricOn->None]]

AutomaticRules[delta,MakeRule[{delta[-A†,B],0},MetricOn->None]]

Protect@delta;

Using previous relations, the Clifford relation can be split in two equations in the following way

TraceProductDummy/@CliffordRelation

Flatten@SplitIndex[%,-ρ->IndexList[-C,-C†]]

Union@Flatten@SplitIndex[%,δ->IndexList[D,D†]]

CliffordSplit=Rest[%]

We compare these equations with the following algebraic properties fulfilled by the soldering form

{σ[-b,-A,D†] σ†[-a,-C†,A]+ σ[-a,-A,D†]σ†[-b,-C†,A]==-delta[-C†,D†]g[-a,-b],Dagger/@(σ[-b,-A,D†] σ†[-a,-C†,A]+ σ[-a,-A,D†]σ†[-b,-C†,A]==-delta[-C†,D†]g[-a,-b])}

Therefore, we conclude the rules

{γ[-a,-C†,A]->Sqrt@2σ†[-a,-C†,A],γ[-b,-A,D†]->Sqrt@2σ[-b,-A,D†]}

We turn these relations into automatic rules.

AutomaticRules[γ,MakeRule[{γ[-a,-C†,A],Sqrt@2σ†[-a,-C†,A]}]]

AutomaticRules[γ,MakeRule[{γ[-b,-A,D†],Sqrt@2σ[-b,-A,D†]}]]

We define the Dirac spinor (fermion).

DefTensor[Ψ[-α],M4,Dagger->Complex]

We define the fermion mass

DefConstantSymbol[M]

This is the Dirac equation as it is usually presented in textbooks.

DiracEquation=I γ[a,-α,β]CDd[-a]@Ψ[-β]==-Sqrt@2M Ψ[-α]

We wish to write this equation in terms of spinors defined in Spin and Spin†.

TraceProductDummy/@DiracEquation

Flatten@SplitIndex[%,IndexList[-α]->IndexList[-C,-C†]]

The covariant derivative CDd acts now on quantities belonging to Spin and Spin†. Therefore it must be replaced by CDe.

%/.CDd->CDe

Map[ContractSolderingForm,%,{2}]

We cancel the factor (Sqrt[2]) on each side.

Map[Times[#,1/Sqrt[2]]&,%,{2}]

SpinDiracEquation=%;

It is convenient to introduce two new spinors to represent (Subscript[Ψ, C]^( ))  and (Subscript[Ψ, C']^(  ))

DefSpinor[ϕ[-A],M4]

PrintAs[ϕ†]^="(Overscript[ϕ, __])";

DefSpinor[χ[-A],M4]

PrintAs[χ†]^="(Overscript[χ, __])";

By definition

{Ψ[-A]==ϕ[-A],Ψ[-A†]==χ†[-A†]}

We turn these definitions into automatic rules.

AutomaticRules[Ψ,MakeRule[{Ψ[-A],ϕ[-A]}]]

AutomaticRules[Ψ,MakeRule[{Ψ[-A†],χ†[-A†]}]]

Hence

SpinDiracEquation

Compare this with eq. (4.4.66) of Penrose & Rindler Vol. 1.

Traces of an odd number of gamma's are zero:

γ[a,-α,β]γ[b,-β,δ]γ[c,-δ,α]

TraceProductDummy@%

But not traces of an even number :

γ[a,-α,β]γ[b,-β,δ]γ[c,-δ,ρ]γ[d,-ρ,α]

TraceProductDummy@%

ContractSolderingForm@%

%/.TetraRule[g]

ToCanonical@ContractMetric@%

MaxMemoryUsed[]

TimeUsed[]

Note: For further information about Spinors`, and to be kept informed about new releases, you may contact the authors electronically at alfonso@math.uminho.pt, jose@xact.es. This is SpinorsDoc.nb, the docfile of Spinors`, currently in version 1.0.5.

?xAct`Spinors`*