I want to find matrix representation of some algebra (Clifford algebra Cl(3,1) in this case). Here is an example, which I would like to get and then extend to higher dimensional matrices.

Suppose we look for 4x4 matrix representation and want to find 4 matrices (matrix dimensions are not directly related to number of matrices)

em1 = Array[a1, {4, 4}]; em2 = Array[a2, {4, 4}]; 
em3 =  Array[a3, {4, 4}]; em4 = Array[a4, {4, 4}];

I know that the algebra representation can be found using SolveAlways as follows

{Det[c[1]*em1 + c[2]*em2 + c[3]*em3 + 
             c[4]*em4] == (c[1]^2 + c[2]^2 + c[3]^2 - c[4]^2)^2, 
          Det[em1] == 1, Tr[em1] == 0, Det[em2] == 1, Tr[em2] == 0, 
          Det[em3] == 1, Tr[em3] == 0, Det[em4] == 1, Tr[em4] == 0}, 
 {c[1],c[2], c[3], c[4]}]

Unfortunatelly, this runs forever (>2 days on my laptop). Below is the test that at least one of representation, which satisfy the the above conditions is

em1test = {{0, 0, 1, 0},
      {0, 0, 0, 1},
      {1, 0, 0, 0},
      {0, 1, 0, 0}}; 
em2test = {{0, 0, -I, 0},
      {0, 0, 0, -I},
      {I, 0, 0, 0},
      {0, I, 0, 0}}; 
em3test = {{0, -I, 0, 0},
      {I, 0, 0, 0},
      {0, 0, 0, I},
      {0, 0, -I, 0}}; 
em4test = {{I, 0, 0, 0},
      {0, -I, 0, 0},
      {0, 0, -I, 0},
      {0, 0, 0, I}};


testRules = 
 Join[Thread[Flatten[em1] -> Flatten[em1test]], 
  Thread[Flatten[em2] -> Flatten[em2test]], 
  Thread[Flatten[em3] -> Flatten[em3test]], 
  Thread[Flatten[em4] -> Flatten[em4test]]]


Det[c[1]*em1 + c[2]*em2 + c[3]*em3 + c[4]*em4] /. testRules // Simplify
(\* (c[1]^2 + c[2]^2 + c[3]^2 - c[4]^2)^2 \*)

Unfortunatelly separating real and imaginary parts seems do not reduce complexity of the problem (same number of unknowns).

From documentation I know that SolveAlways can be rewriten in terms of, say Solve and Eliminate. So, I hope, that it can be rewriten in terms of GroebnerBasis itself. How can this be done? How far I can hope to go for looking for representations of higher algebras? Can I hope say, 8x8 dimensional representation for 7 matrices to be reachable within this approach? Any other ideas?

Edit 1

Answering to the comment I can reformulate the problem in terms of hermitian Transpose[Conjugate[m]]=m and antihermitian Transpose[Conjugate[m]]=-m matrices as follows:



and then


Unfortunatelly, counting variables we see that number of unknowns did't change, i.e. 64+4, except that now solutions should be real numbers. Unfortunatelly I don't know how to use this restriction in SolveAlways.


Answering the comment about restructions I reformulated the problem to include all known constraints

  • $\begingroup$ I think this might be intractable as posed. You have 9 equations and 68 variables. Are there more relations to consider? For example, are the matrices intended to be unitary (as is the case for the xxxtest matrices above)? $\endgroup$ Nov 10 '15 at 17:12
  • $\begingroup$ I made a number of tests with higher dimensional matrices (direct products of known representations) and now I am quite sure that for positive signatures i.e. em1,em2 and em3 matrices are hermitian Transpose[Conjugate[m]]=m and for negative signatures, antihermitian Transpose[Conjugate[m]]=-m. Because of permutations, I would assume there should be at least 3! solutions. As an additional constraint, every pair of the matrices satisfy identity em1.em2+em2.em1=(-1)^(signature of em1) KroneckerDelta[1,2] IdentityMatrix[4], which I not yet used (thanks for asking about this). $\endgroup$
    – Acus
    Nov 11 '15 at 9:53
  • $\begingroup$ I missed Factor 2 in the identity em1.em2+em2.em1=2(-1)^(signature of em1) KroneckerDelta[1,2] IdentityMatrix[4] $\endgroup$
    – Acus
    Nov 11 '15 at 10:08
  • 1
    $\begingroup$ To impose the Hermitian-by-signature-parity I think you really do need to double your variables into real and imaginary components. Anything that can be done to break the symmetries will also help. After all this is done, I expect the problem will be intractable. If you set it up as a GroebnerBasis invocation, I'd consider using settings MonomialOrder -> DegreeReverseLexicographic, CoefficientDomain -> \ RationalFunctions where the c[j] for j in Range[4] are in effect parameters (so the "variables" argument in GB would be Variables[{em1, em2, em3, em4}]). $\endgroup$ Nov 11 '15 at 15:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.