This is the first public version of a small maxima program Clifford.mac, which consists of functions defining the non-commutative product && of the gamma matrices and reducing polynomials of the gamma matrices to the standard forms. All calculations are symbolic and do not utilize any explicit matrix prepresentation of the gamma matrices.
This package requires the following files. If you put these in a directory different from the main file Clifford_v1_10_pub.mac, you need to add it to file_search_maxima or change the value of the variable LibDir in the main file and SymbolicTensorCalculus file.
Each gamma matrix is expressed as Gamm[a_1,..., a_k], which is antisymmetric w.r.t. the indices a_1, ..., a_k.
expresses ‹ expr › as a linear combination of the standard basis Gamm[a], ..., Gamm[a_1, ..., a_N] of the Clifford algebra.
eliminates metric tensors with summation indices, such as eta[s,s], eta[s, a]. by executing the summation symboically.
replaces the summation indecies sa, s1, ... in each term of ‹ expr › by a canonical set such as ss1, ss2, ...
collects terms containing gamma matrices of the same rank. The result is represented by a dict, unless the result has a single term, in which case that single term is given as dictobj.
→ | expr0 : Gamm[s1] && Gamm[a] && Gamm[s2] && Gamm[b]$ |
→ | expr1: expand(CLsimplify(expr0)); |
(%o) | eta[a,s1]*eta[b,s2] -eta[a,b]*eta[s1,s2]+eta[a,s2]*eta[b,s1] |
- eta[s1,s2]*Gamm[a,b] -eta[a,b]*Gamm[s1,s2] -eta[a,s1]*Gamm[b,s2] | |
-eta[b,s1]*Gamm[a,s2] +eta[a,s2]*Gamm[b,s1]+ eta[b,s1]*Gamm[a,s2] | |
-Gamm[a,b,s1,s2] | |
→ | expr2: factor(gContraction(eta[s1,s2]*expr1)); |
(%o) | (2-dim)*( eta[a,b] + Gamm[a,b] ) |
→ | dict: Gsort(expr2)$ |
(%o) | ranklist = [0, 2, all] |
→ | showdict(dict) |
(%o) | [ [all]=[(2-dim)*eta[a,b]+(2-dim)*Gamm[a,b]], |
[0]=[(2-dim)*eta[a,b]], [2]=[(2-dim)*Gamm[a,b]] ] |
→ | expr0 : x *sin(y)$ |
→ | symmetrize(expr0, [x,y], a); |
(%o) | x*sin(y) - y*sin(x) |
→ | expr0 : a*Gamm[a] && Gamm[b]$ |
→ | factor(symmetrizeT(expr0,Gamm, [a,b], -1)); |
(%o) | a*(Gamm[a] && Gamm[b] - Gamm[b] && Gamm[a]) |
→ | factor(symmetrizeT(expr0,G, [a,b], -1)); |
(%o) | 0 |
→ | factor(symmetrizeT(expr0,G, [a,b], +1)); |
(%o) | a*Gamm[a] && Gamm[b] |