While Mathematica has long supported non-commutative algebra through external packages such as NCAlgebra, built-in functionality for this purpose was only introduced in version 14.3. In this short computational essay, I explore the algebraic structure of Dirac gamma matrices using the new non-commutative features integrated into Mathematica 14.3.
I’d like to thank Jose M. Martin-Garcia for his feedback and comments on this notebook.
Signature convention =1:
0123
ϵ
In[]:=
Signature[{0,1,2,3}]
Out[]=
1
Define the metric (which is the common Particle Physics convention. The GeneralRelativity convention is usually {-1, 1, 1, 1}):
η=diag{1,-1,-1,-1}
In[]:=
Do[η[α,β]=0,{α,0,3},{β,0,3}]η[0,0]=+1;η[1,1]=η[2,2]=η[3,3]=-1;
Symbols for Dirac matrices:
In[]:=
ClearAll[γu,upIndex]upIndex=Array[γu,4,0];
Define =
γ
μ
η
μν
ν
γ
In[]:=
ClearAll[γd,downIndex]downIndex=Array[γd,4,0];Table[γd[μ]=Sum[η[μ,α]γu[α],{α,0,3}],{μ,0,3}];
Algebraic relations between Dirac matrices (Clifford algebra):
{,}=2
μ
γ
ν
γ
μν
η
In[]:=
rel=Table[Anticommutator[γu[α],γu[β],Dot]-2η[α,β],{α,0,3},{β,0,3}]//Flatten
Out[]=
{-2+2γu[0].γu[0],γu[0].γu[1]+γu[1].γu[0],γu[0].γu[2]+γu[2].γu[0],γu[0].γu[3]+γu[3].γu[0],γu[0].γu[1]+γu[1].γu[0],2+2γu[1].γu[1],γu[1].γu[2]+γu[2].γu[1],γu[1].γu[3]+γu[3].γu[1],γu[0].γu[2]+γu[2].γu[0],γu[1].γu[2]+γu[2].γu[1],2+2γu[2].γu[2],γu[2].γu[3]+γu[3].γu[2],γu[0].γu[3]+γu[3].γu[0],γu[1].γu[3]+γu[3].γu[1],γu[2].γu[3]+γu[3].γu[2],2+2γu[3].γu[3]}
Define Groebner basis:
In[]:=
gb=NonCommutativeGroebnerBasis[rel,upIndex,Dot]
Out[]=
-,γu[0].γu[1]+γu[1].γu[0],γu[0].γu[2]+γu[2].γu[0],γu[0].γu[3]+γu[3].γu[0],+,γu[1].γu[2]+γu[2].γu[1],γu[1].γu[3]+γu[3].γu[1],+,γu[2].γu[3]+γu[3].γu[2],+
2
.
γu[0]
n.
2
.
γu[1]
n.
2
.
γu[2]
n.
2
.
γu[3]
n.
Define a simplification function:
In[]:=
simplify[True]:=True;simplify[list_List]:=simplify/@list;simplify[Equal[lhs_,rhs_]]:=Equal[simplify[lhs],simplify[rhs]];simplify[expr_]:=Last@NonCommutativePolynomialReduce[expr,gb,upIndex,Dot]
Check =4
μ
γ
γ
μ
In[]:=
Sum[γu[j].γd[j],{j,0,3}]==4//simplify
n.
Out[]=
True
Check =-2
μ
γ
ν
γ
γ
μ
ν
γ
In[]:=
Table[Sum[γu[μ].γu[ν].γd[μ],{μ,0,3}]==-2γu[ν],{ν,0,3}]//simplify
Out[]=
{True,True,True,True}
Check =4
μ
γ
ν
γ
ρ
γ
γ
μ
νρ
η
In[]:=
TableSum[γu[μ].γu[ν].γu[ρ].γd[μ],{μ,0,3}]==4η[ν,ρ],{ν,0,3},{ρ,0,3}//simplify
n.
Out[]=
{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}
Check =-2
μ
γ
ν
γ
ρ
γ
σ
γ
γ
μ
σ
γ
ρ
γ
ν
γ
In[]:=
Table[Sum[γu[μ].γu[ν].γu[ρ].γu[s].γd[μ],{μ,0,3}]==-2γu[s].γu[ρ].γu[ν],{ν,0,3},{ρ,0,3},{s,0,3}]//simplify
Out[]=
{{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}}
Define projector:
5
γ
In[]:=
γ5=Dot@@upIndex
Out[]=
γu[0].γu[1].γu[2].γu[3]
Check =
5
γ
4!
μναβ
ϵ
γ
μ
γ
ν
γ
α
γ
β
In[]:=
γ5==Sum[Signature[{μ,ν,α,β}]γu[μ].γu[ν].γu[α].γu[β],{μ,0,3},{ν,0,3},{α,0,3},{β,0,3}]//simplify
4!
Out[]=
True
Check =
2
5
γ
In[]:=
γ5.γ5==//simplify
n.
Out[]=
True
Check
,=0
5
γ
μ
γ
In[]:=
FunctionAnticommutator[γ5,#,Dot]==/@upIndex//simplify
n.,n.
Out[]=
{True,True,True,True}
Check =
5
γ
μ
γ
3!
μαβγ
ϵ
γ
α
γ
β
γ
γ
In[]:=
Tableγ5.γu[μ]==Sum[Signature[{μ,α,β,γ}]γd[α].γd[β].γd[γ],{α,0,3},{β,0,3},{γ,0,3}],{μ,0,3}//simplify
3!
Out[]=
{True,True,True,True}
Define =[,]
μν
σ
2
μ
γ
ν
γ
In[]:=
σUp[μ_,ν_]:=/2Commutator[γu[μ],γu[ν],Dot]
Check
,=0
5
γ
μν
σ
In[]:=
TableCommutator[γ5,σUp[μ,ν],Dot]==,{μ,0,3},{ν,0,3}//simplify
n.,n.
Out[]=
{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}
Check
[,]=2(--+)
μν
σ
ρs
σ
νρ
η
μs
σ
μρ
η
νs
σ
νs
η
μρ
σ
μs
η
νρ
σ
In[]:=
Table[Commutator[σUp[μ,ν],σUp[ρ,s],Dot]==2(η[ν,ρ]σUp[μ,s]-η[μ,ρ]σUp[ν,s]-η[ν,s]σUp[μ,ρ]+η[μ,s]σUp[ν,ρ]),{μ,0,3},{ν,0,3},{ρ,0,3},{s,0,3}]//simplify
Out[]=
{{{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}},{{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}},{{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}},{{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}}}
Check
[,]=2(-)
μν
σ
ρ
γ
νρ
η
μ
γ
μρ
η
ν
γ
In[]:=
Table[Commutator[σUp[μ,ν],γu[ρ],Dot]==2(η[ν,ρ]γu[μ]-η[μ,ρ]γu[ν]),{μ,0,3},{ν,0,3},{ρ,0,3}]//simplify
Out[]=
{{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}},{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}}
Define =
μν
σ
5
γ
μν
σ
In[]:=
σBar[μ_,ν_]:=γ5.σUp[μ,ν]
Define =[,]
σ
μν
4
γ
μ
γ
ν
In[]:=
σDown[μ_,ν_]:=/2Commutator[γd[μ],γd[ν],Dot]
Check =
σ
μν
η
μα
η
νβ
αβ
σ
In[]:=
Table[σDown[i,k]==Sum[η[i,j]η[k,l]σUp[j,l],{j,0,3},{l,0,3}],{i,0,3},{k,0,3}]//simplify
Out[]=
{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}
Check =
νρ
σ
2
σμνρ
ϵ
σ
σμ
In[]:=
TableσBar[ν,ρ]==Sum[Signature[{s,μ,ν,ρ}]σDown[s,μ],{μ,0,3},{s,0,3}],{ν,0,3},{ρ,0,3}//simplify
2
Out[]=
{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}
Check =
5
γ
μν
σ
μν
σ
In[]:=
Table[γ5.σBar[μ,ν]==σUp[μ,ν],{μ,0,3},{ν,0,3}]//simplify
Out[]=
{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}
Check =12
μν
σ
σ
μν
In[]:=
Sum[σUp[μ,ν].σDown[μ,ν],{μ,0,3},{ν,0,3}]==12//simplify
n.
Out[]=
True
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Dirac gamma matrices and non-commutative algebra
by Mohammad Bahrami
Wolfram Community, STAFF PICKS, August 7, 2025
https://community.wolfram.com/groups/-/m/t/3526344
by Mohammad Bahrami
Wolfram Community, STAFF PICKS, August 7, 2025
https://community.wolfram.com/groups/-/m/t/3526344