On Nov. 26, Robert Dodier wrote:
--------------------------
> Good catch, Ted. I wrote the product rules incorrectly.
> Here is a patch. Please try it again and let us know how it turns out.
>
>PS.
>
>@@ -51,8 +51,8 @@
> nctimesp (e) := not atom(e) and op(e) = ".";
> matchdeclare (aa, nctimesp);
> matchdeclare (cc, all);
>-defrule (rcommp1, comm (aa, cc), first (aa) . comm (rest (aa), cc) +
>comm (rest (aa, -1), cc) . last (aa));
>-defrule (rcommp2, comm (cc, aa), first (aa) . comm (cc, rest (aa)) +
>comm (cc, rest (aa, -1)) . last (aa));
>+defrule (rcommp1, comm (aa, cc), first (aa) . comm (rest (aa), cc) +
>comm (first (aa), cc) . rest (aa));
>+defrule (rcommp2, comm (cc, aa), first (aa) . comm (cc, rest (aa)) +
>comm (cc, first (aa)) . rest (aa));
>
> matchdeclare (aa, nonscalarp);
> matchdeclare (nn, integerp);
>
--------------------------------------
This patch produces agreement with the correct value.
---------------
(%i13) ee:comm(b^^3,c^^5)
(%o13) comm(b^^3,c^^5)
(%i14) ee_reduce:comm_simp(ee)
(%o14) c . c . c . c . comm(b,c) . b . b+c . c . c . comm(b,c) . c . b . b
+c . c . comm(b,c) . c . c . b . b
+c . comm(b,c) . c . c . c . b . b
+comm(b,c) . c . c . c . c . b . b
+b . c . c . c . c . comm(b,c) . b
+b . c . c . c . comm(b,c) . c . b
+b . c . c . comm(b,c) . c . c . b
+b . c . comm(b,c) . c . c . c . b
+b . comm(b,c) . c . c . c . c . b
+b . b . c . c . c . c . comm(b,c)
+b . b . c . c . c . comm(b,c) . c
+b . b . c . c . comm(b,c) . c . c
+b . b . c . comm(b,c) . c . c . c
+b . b . comm(b,c) . c . c . c . c
(%i15) ee_r1:ratsubst(comm_replace,comm(b,c),ee_reduce)
(%i16) ee_r2:subst([b = Sig[2],c = Sig[3]],ee_r1)
(%o16) matrix([0,2*%i],[2*%i,0])
(%i17) " which agrees with comm_val "
(%i18) comm_val
(%o18) matrix([0,2*%i],[2*%i,0])
---------------------------------------------
Thanks,
Ted