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
0123
ϵ
=1
:
In[]:=
Signature[{0,1,2,3}]
Out[]=
1
Define the metric
η=diag{1,-1,-1,-1}
(which is the common Particle Physics convention. The GeneralRelativity convention is usually {-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[]=

2
.
γu[0]
-

n.
,γu[0].γu[1]+γu[1].γu[0],γu[0].γu[2]+γu[2].γu[0],γu[0].γu[3]+γu[3].γu[0],
2
.
γu[1]
+

n.
,γu[1].γu[2]+γu[2].γu[1],γu[1].γu[3]+γu[3].γu[1],
2
.
γu[2]
+

n.
,γu[2].γu[3]+γu[3].γu[2],
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

n.
//simplify
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[]:=
TableSum[γu[μ].γu[ν].γu[ρ].γd[μ],{μ,0,3}]==4η[ν,ρ]

n.
,{ν,0,3},{ρ,0,3}//simplify
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
5
γ
projector:
In[]:=
γ5=Dot@@upIndex
Out[]=
γu[0].γu[1].γu[2].γu[3]
Check
5
γ
=

4!
μναβ
ϵ
γ
μ
γ
ν
γ
α
γ
β
In[]:=
γ5==

4!
Sum[Signature[{μ,ν,α,β}]γu[μ].γu[ν].γu[α].γu[β],{μ,0,3},{ν,0,3},{α,0,3},{β,0,3}]//simplify
Out[]=
True
Check
2

5
γ

=
In[]:=
γ5.γ5==

n.
//simplify
Out[]=
True
Check

5
γ
,
μ
γ
=0
In[]:=
FunctionAnticommutator[γ5,#,Dot]==

n.,n.
/@upIndex//simplify
Out[]=
{True,True,True,True}
Check
5
γ
μ
γ
=

3!
μαβγ
ϵ
γ
α
γ
β
γ
γ
In[]:=
Tableγ5.γu[μ]==

3!
Sum[Signature[{μ,α,β,γ}]γd[α].γd[β].γd[γ],{α,0,3},{β,0,3},{γ,0,3}],{μ,0,3}//simplify
Out[]=
{True,True,True,True}
Define
μν
σ
=

2
[
μ
γ
,
ν
γ
]
In[]:=
σUp[μ_,ν_]:=/2Commutator[γu[μ],γu[ν],Dot]
Check

5
γ
,
μν
σ
=0
In[]:=
TableCommutator[γ5,σUp[μ,ν],Dot]==

n.,n.
,{μ,0,3},{ν,0,3}//simplify
Out[]=
{{True,True,True,True},{True,True,True,True},{True,True,True,True},{True,True,True,True}}
Check
[
μν
σ
,
ρs
σ
]=2(
νρ
η
μ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[ν,ρ]==

2
Sum[Signature[{s,μ,ν,ρ}]σDown[s,μ],{μ,0,3},{s,0,3}],{ν,0,3},{ρ,0,3}//simplify
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

n.
//simplify
Out[]=
True

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