Well now that the display problem is fixed in CVS I went back to the
problem I was really trying to solve:
s[0]:matrix([1,0],[0,1]);
s[1]:matrix([1,0],[0,-1]);
s[2]:matrix([0,1],[1,0]);
s[3]:matrix([0,%i],[-%i,0]);
array(b,4);
array(a,4,4);
for i:0 thru 4 do
block ( scalar(b[i]),
for j:0 thru 4 do
scalar(a[i,j])
);
bb:0;
for i:0 thru 3 do
bb:bb+b[i]*s[i];
for i:1 thru 3 do
block( aa[i]:0,
for j:0 thru 3 do
aa[i]:aa[i]+a[i,j]*s[j]
);
aa[1].bb$
ratsimp(%)
Which gives
[ 1 0 ] [ 1 0 ] [ 0 %i ]
(%o12) (a [ ] + a [ ] + a [ ]
1, 0 [ 0 1 ] 1, 1 [ 0 - 1 ] 1, 3 [ - %i 0 ]
[ 0 1 ] [ 1 0 ] [ 1 0 ] [ 0 %i ]
+ a [ ]) . (b [ ] + b [ ] + b [ ]
1, 2 [ 1 0 ] 0 [ 0 1 ] 1 [ 0 - 1 ] 3 [ - %i 0 ]
[ 0 1 ]
+ b [ ])
2 [ 1 0 ]
This isn't right, or rather it is right, but useless (This should give a
2x2 matrix whose elements contain a[1,j]*b[j']. It seems that it is
assuming noncommutative algebra for the a's and b's. I tried adding the
scalar definitions as shown above, but this didn't seem to help.
Similarly, moving the scalar define loops elsewhere didn't help.