symbolic Pauli matrix expansions



On Nov. 28, Robert Dodier wrote:
-----------------

> I don't see a problem w/ tellsimpafter here ...

>> tellsimpafter (comm (sig2,sig1), -2*%i*sig2)$

> This result should be -2*%i*sig3, right?

> After changing that rule, I get
> pauli_simp (comm (sig2^^3, sig1^^5))
>   => - 2 %i sig3
---------------------------
You are right.  I had the wrong replacement in that
line, and tellsimpafter passes the test with
pauli0.mac:
--------------------------------------------

/* file pauli0.mac uses
  tellsimpafter after 
  defrule expansion */
  
  
 load (commutators)$

 remove (comm, antisymmetric)$

 declare ([s1, s2, s3, s4], scalar)$
 
 declare ([sig1,sig2,sig3],nonscalar)$
 
 tellsimpafter (comm (sig1,sig2), 2*%i*sig3)$

tellsimpafter (comm (sig2,sig1), -2*%i*sig3)$

tellsimpafter (comm (sig2,sig3), 2*%i*sig1)$

tellsimpafter (comm (sig3,sig2), -2*%i*sig1)$

tellsimpafter (comm (sig3,sig1), 2*%i*sig2)$

tellsimpafter (comm (sig1,sig3), -2*%i*sig2)$


tellsimpafter (sig1 . sig1, 1)$

tellsimpafter (sig2 . sig2, 1)$

tellsimpafter (sig3 . sig3, 1)$

tellsimpafter (sig1 . sig2, %i*sig3)$

tellsimpafter (sig2 . sig1, -%i*sig3)$

tellsimpafter (sig2 . sig3, %i*sig1)$

tellsimpafter (sig3 . sig2, -%i*sig1)$

tellsimpafter (sig3 . sig1, %i*sig2)$

tellsimpafter (sig1 . sig3, -%i*sig2)$


pauli_simp (e) := (comm_simp (e), ev(%%, infeval))$


 /*
 
 (%i1) load(pauli0);
(%o1) "c:/work5/pauli0.mac"
(%i2) pauli_simp ( comm (sig2^^3,sig3^^5));
(%o2) 2*%i*sig1
(%i3) pauli_simp ( comm (sig3^^3,sig1^^5));
(%o3) 2*%i*sig2
(%i4) pauli_simp ( comm (sig1^^3,sig2^^5));
(%o4) 2*%i*sig3
(%i5) pauli_simp ( comm (sig3^^3,sig2^^5));
(%o5) -2*%i*sig1
(%i6) pauli_simp ( comm (sig1^^3,sig3^^5));
(%o6) -2*%i*sig2
(%i7) pauli_simp ( comm (sig2^^3,sig1^^5));
(%o7) -2*%i*sig3

*/
-------------------------------
So now I have two working methods, which I would
like to extend to other commonly used (in physics)
matrices.

Thanks for the feedback,

Ted