VERIFICATION OF THE FORMULAS IN THEOREM 3.1 What follows is a verification that in the cases n=3,4 the formulas given in Theorem 3.1 do in fact form a generating set of the corresponding syzygy module. The last command "S=Syz(M);" will output "TRUE" if the module S is the syzygy module, and "FALSE" if it is not. Of course, when the program is run, "TRUE" is the output and that shows that the generators that we have in the commutator formulas are generators. What is given is a sequence of commands that computes the desired quantities in the language CoCoA (Capani, A., Niesi, G., Robbiano, L.: CoCoA, a system for doing Computations in Commutative Algebra, (1995). Available via anonymous ftp from lancelot.dima.unige.it). The statements beginning "--" are comments and the rest are CoCoA commands. ======================================================================= THE n=3 CASE -- The 3 variable case with a degree reverse lexicographical ordering as in the paper. Use R::=Q[x[0..3],y[0..3],z[0..3]], Ord(1,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,-1, 0,0,0,0,0,0,0,-1,0,0,0,0, 0,0,0,-1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,-1,0, 0,0,0,0,0,0,-1,0,0,0,0,0, 0,0,-1,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,-1,0,0, 0,0,0,0,0,-1,0,0,0,0,0,0, 0,-1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,-1,0,0,0, 0,0,0,0,-1,0,0,0,0,0,0,0); --This is the first quaternionic variable in matrix form. U:=Transposed(Mat([[x[0], - x[1], - x[2], - x[3]], [x[1], x[0], - x[3], x[2]], [x[2], x[3], x[0], - x[1]], [x[3], - x[2], x[1], x[0]]])); --This is the second quaternionic variable in matrix form. V:=Transposed(Mat([[y[0], - y[1], - y[2], - y[3]], [y[1], y[0], - y[3], y[2]], [y[2], y[3], y[0], - y[1]], [y[3], - y[2], y[1], y[0]]])); --This is the third quaternionic variable in matrix form. W:=Transposed(Mat([[z[0],-z[1],-z[2],-z[3]], [z[1],z[0],-z[3],z[2]], [z[2],z[3],z[0],-z[1]], [z[3],-z[2],z[1],z[0]]])); --This is the module M in matrix form. P:=Transposed(Mat([ [x[0], - x[1], - x[2], - x[3]], [x[1], x[0], - x[3], x[2]], [x[2], x[3], x[0], - x[1]], [x[3], - x[2], x[1], x[0]], [y[0], - y[1], - y[2], - y[3]], [y[1], y[0], - y[3], y[2]], [y[2], y[3], y[0], - y[1]], [y[3], - y[2], y[1], y[0]], [z[0],-z[1],-z[2],-z[3]], [z[1],z[0],-z[3],z[2]], [z[2],z[3],z[0],-z[1]], [z[3],-z[2],z[1],z[0]]])); --These are the quaternions i, j, and k in matrix form. I:=Mat([[0,1,0,0],[-1,0,0,0],[0,0,0,1],[0,0,-1,0]]); J:=Mat([[0,0,1,0],[0,0,0,-1],[-1,0,0,0],[0,1,0,0]]); K:=Mat([[0,0,0,1],[0,0,1,0],[0,-1,0,0],[-1,0,0,0]]); --This is the 4x4 zero matrix needed to form the appropriate size matrices. A:=Mat([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]);> ------------------------------------------- --First form of syzygies given by the first set of commutators (Theorem 3.1 Formula 1). --This is the syzygy from the commutator [U*U^t,V]=0. B1:=Concat(Cast(Transposed(U)*V,LIST),Cast(-U*Transposed(U),LIST),Cast(A,LIST)); --Verify that B1 is a syzygy. P*Cast(B1,MAT); --Make B1 into a module. S:=Cast(Transposed(Cast(B1,MAT)),MODULE); --This is the syzygy from the commutator [V*V^t,U]=0. B2:=Concat(Cast(V*Transposed(V),LIST),Cast(-Transposed(V)*U,LIST),Cast(A,LIST)); --Verify that B2 is a syzygy. P*Cast(B2,MAT); --Make B2 into a module. S:=S+Cast(Transposed(Cast(B2,MAT)),MODULE); --This is the syzygy from the commutator [U*U^t,W]=0. B3:=Concat(Cast(Transposed(U)*W,LIST),Cast(A,LIST),Cast(-U*Transposed(U),LIST)); --Verify that B3 is a syzygy. P*Cast(B3,MAT); --Make B3 into a module. S:=S+Cast(Transposed(Cast(B3,MAT)),MODULE); --This is the syzygy from the commutator [W*W^t,U]=0. B4:=Concat(Cast(W*Transposed(W),LIST),Cast(A,LIST),Cast(-Transposed(W)*U,LIST)); --Verify that B4 is a syzygy. P*Cast(B4,MAT); --Make B4 into a module. S:=S+Cast(Transposed(Cast(B4,MAT)),MODULE); --This is the syzygy from the commutator [V*V^t,W]=0. B5:=Concat(Cast(A,LIST),Cast(Transposed(V)*W,LIST),Cast(-V*Transposed(V),LIST)); --Verify that B5 is a syzygy. P*Cast(B5,MAT); --Make B5 into a module. S:=S+Cast(Transposed(Cast(B5,MAT)),MODULE); --This is the syzygy from the commutator [W*W^t,V]=0. B6:=Concat(Cast(A,LIST),Cast(W*Transposed(W),LIST),Cast(-Transposed(W)*V,LIST)); --Verify that B6 is a syzygy. P*Cast(B6,MAT); --Make B6 into a module. S:=S+Cast(Transposed(Cast(B6,MAT)),MODULE); ------------------------------------------- >--Second form of syzygies given by the second set of commutators (Theorem 3.1 Formula 2). --This is the syzygy from the commutator [UV^t + VU^t , W]=0. B7:=Concat(Cast(Transposed(V)*W,LIST),Cast(Transposed(U)*W,LIST),Cast(-U*Transposed(V)-V*Transposed(U),LIST)); --Verify that B7 is a syzygy. P*Cast(B7,MAT); --Make B7 into a module. S:=S+Cast(Transposed(Cast(B7,MAT)),MODULE); --This is the syzygy from the commutator [UW^t + WU^t,V]=0. B8:=Concat(Cast(Transposed(W)*V,LIST),Cast(-(U*Transposed(W)+W*Transposed(U)),LIST),Cast(Transposed(U)*V,LIST)); --Verify that B8 is a syzygy. P*Cast(B8,MAT); --Make B8 into a module. S:=S+Cast(Transposed(Cast(B8,MAT)),MODULE); ------------------------------------------- --Third form of syzygies given by the third set of commutators (Theorem 3.1 Formula 3). --This is from the commutator [W,V]J[U,i] + [U,W]J[V,I] + [V,U]J[W,I] = 0. B9:=Concat(Cast(-V*J*(W*I-I*W)+W*J*(V*I-I*V),LIST),Cast(-W*J*(U*I-I*U)+U*J*(W*I-I*W),LIST),Cast(V*J*(U*I-I*U)-U*J*(V*I-I*V),LIST)); --Verify that B9 is a syzygy. P*Cast(B9,MAT); --Make B9 into a module. S:=S+Cast(Transposed(Cast(B9,MAT)),MODULE); --This is from the commutator [W,V]J[U,i] + [U,W]J[V,I] + [V,U]J[W,I] = 0. B10:=Concat(Cast(-V*I*(W*J-J*W)+W*I*(V*J-J*V),LIST),Cast(-W*I*(U*J-J*U)+U*I*(WJ-J*W),LIST),Cast(V*I*(U*J-J*U)-U*I*(V*J-J*V),LIST)); --Verify that B10 is a syzygy. P*Cast(B10,MAT); --Make B10 into a module. S:=S+Cast(Transposed(Cast(B10,MAT)),MODULE); ------------------------------------------ --Now we verify that we have the right syzygy module. --Module defined by the 3 quaternionic variables. M:=Module( [x[0],-x[1],-x[2],-x[3]], [x[1],x[0],-x[3],x[2]], [x[2],x[3],x[0],-x[1]], [x[3],-x[2],x[1],x[0]], [y[0], - y[1], - y[2], - y[3]], [y[1], y[0], - y[3], y[2]], [y[2], y[3], y[0], - y[1]], [y[3], - y[2], y[1], y[0]], [z[0], - z[1], - z[2], - z[3]], [z[1], z[0], - z[3], z[2]], [z[2], z[3], z[0], - z[1]], [z[3], - z[2], z[1], z[0]]); --This will output "TRUE" if S is the right syzygy module. S=Syz(M); ================================================================== THE n=4 CASE -- The 4 variable case with a degree reverse lexicographical ordering as in the paper. Use R::=Q[x[0..3],y[0..3],z[0..3],w[0..3]], Ord(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1, 0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0, 0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0, 0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0, 0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0, 0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0, 0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0, 0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0, 0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0, 0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0, 0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0, 0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0); --This is the first quaternionic variable in matrix form. X:=Transposed(Mat([[x[0], - x[1], - x[2], - x[3]], [x[1], x[0], - x[3], x[2]], [x[2], x[3], x[0], - x[1]], [x[3], - x[2], x[1], x[0]]])); --This is the second quaternionic variable in matrix form. Y:=Transposed(Mat([[y[0], - y[1], - y[2], - y[3]], [y[1], y[0], - y[3], y[2]], [y[2], y[3], y[0], - y[1]], [y[3], - y[2], y[1], y[0]]])); --This is the third quaternionic variable in matrix form. Z:=Transposed(Mat([[z[0],-z[1],-z[2],-z[3]], [z[1],z[0],-z[3],z[2]], [z[2],z[3],z[0],-z[1]], [z[3],-z[2],z[1],z[0]]])); --This is the fourth quaternionic variable in matrix form. W:=Transposed(Mat([[w[0],-w[1],-w[2],-w[3]], [w[1],w[0],-w[3],w[2]], [w[2],w[3],w[0],-w[1]], [w[3],-w[2],w[1],w[0]]])); --This is the module M in matrix form. P:=Transposed(Mat([ [x[0], - x[1], - x[2], - x[3]], [x[1], x[0], - x[3], x[2]], [x[2], x[3], x[0], - x[1]], [x[3], - x[2], x[1], x[0]], [y[0], - y[1], - y[2], - y[3]], [y[1], y[0], - y[3], y[2]], [y[2], y[3], y[0], - y[1]], [y[3], - y[2], y[1], y[0]], [z[0],-z[1],-z[2],-z[3]], [z[1],z[0],-z[3],z[2]], [z[2],z[3],z[0],-z[1]], [z[3],-z[2],z[1],z[0]], [w[0],-w[1],-w[2],-w[3]], [w[1],w[0],-w[3],w[2]], [w[2],w[3],w[0],-w[1]], [w[3],-w[2],w[1],w[0]]])); --These are the quaternions i, j, and k in matrix form. I:=Mat([[0,1,0,0],[-1,0,0,0],[0,0,0,1],[0,0,-1,0]]); J:=Mat([[0,0,1,0],[0,0,0,-1],[-1,0,0,0],[0,1,0,0]]); K:=Mat([[0,0,0,1],[0,0,1,0],[0,-1,0,0],[-1,0,0,0]]); --This is the 4x4 zero matrix needed to form the appropriate size matrices. A:=Mat([[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]); ------------------------------------------- --First form of syzygies given by the first set of commutators (Theorem 3.1 Formula 1). --This is the syzygy from the commutator [X*X^t,Y]=0. B1:=Concat(Cast(Transposed(X)*Y,LIST),Cast(-X*Transposed(X),LIST),Cast(A, LIST,Cast(A,LIST)); --Verify that B1 is a syzygy. P*Cast(B1,MAT); --Make B1 into a module. S:=Cast(Transposed(Cast(B1,MAT)),MODULE); --This is the syzygy from the commutator [Y*Y^t,X]=0. B2:=Concat(Cast(Y*Transposed(Y),LIST),Cast(-Transposed(Y)*X,LIST),Cast(A,LIST)Cast(A,LIST)); --Verify that B2 is a syzygy. P*Cast(B2,MAT); --Make B2 into a module. S:=S+Cast(Transposed(Cast(B2,MAT)),MODULE); --This is the syzygy from the commutator [X*X^t,Z]=0. B3:=Concat(Cast(Transposed(X)*Z,LIST),Cast(A,LIST),Cast(-X*Transposed(X),LIST)Cast(A,LIST)); --Verify that B3 is a syzygy. P*Cast(B3,MAT); --Make B3 into a module. S:=S+Cast(Transposed(Cast(B3,MAT)),MODULE); --This is the syzygy from the commutator [Z*Z^t,X]=0. B4:=Concat(Cast(Z*Transposed(Z),LIST),Cast(A,LIST),Cast(-Transposed(Z)*X,LIST)Cast(A,LIST)); --Verify that B4 is a syzygy. P*Cast(B4,MAT); --Make B4 into a module. S:=S+Cast(Transposed(Cast(B4,MAT)),MODULE); --This is the syzygy from the commutator [Y*Y^t,Z]=0. B5:=Concat(Cast(A,LIST),Cast(Transposed(Y)*Z,LIST),Cast(-Y*Transposed(Y),LIST)Cast(A,LIST)); --Verify that B5 is a syzygy. P*Cast(B5,MAT); --Make B5 into a module. S:=S+Cast(Transposed(Cast(B5,MAT)),MODULE); --This is the syzygy from the commutator [Z*Z^t,Y]=0. B6:=Concat(Cast(A,LIST),Cast(Z*Transposed(Z),LIST),Cast(-Transposed(Z)*Y,LIST)Cast(A,LIST)); --Verify that B6 is a syzygy. P*Cast(B6,MAT); --Make B6 into a module. S:=S+Cast(Transposed(Cast(B6,MAT)),MODULE); --This is the syzygy from the commutator [Z*Z^t,W]=0. B7:=Concat(Cast(A,LIST),Cast(A,LIST),Cast(Transposed(Z)*W,LIST),Cast(-Z*Transposed(Z),LIST)); --Verify that B7 is a syzygy. P*Cast(B7,MAT); --Make B7 into a module. S:=S+Cast(Transposed(Cast(B7,MAT)),MODULE); --This is the syzygy from the commutator [W*W^t,Z]=0. B8:=Concat(Cast(A,LIST),Cast(A,LIST),Cast(W*Transposed(W),LIST),Cast(-Transposd(W)*Z,LIST)); --Verify that B8 is a syzygy. P*Cast(B8,MAT); --Make B8 into a module. S:=S+Cast(Transposed(Cast(B8,MAT)),MODULE); --This is the syzygy from the commutator [Y*Y^t,W]=0. B9:=Concat(Cast(A,LIST),Cast(Transposed(Y)*W,LIST),Cast(A,LIST),Cast(-Y*Transposed(Y),LIST)); --Verify that B9 is a syzygy. P*Cast(B9,MAT); --Make B9 into a module. S:=S+Cast(Transposed(Cast(B9,MAT)),MODULE); --This is the syzygy from the commutator [W*W^t,Y]=0. B10:=Concat(Cast(A,LIST),Cast(W*Transposed(W),LIST),Cast(A,LIST),Cast(-Transpod(W)*Y,LIST)); --Verify that B10 is a syzygy. P*Cast(B10,MAT); --Make B10 into a module. S:=S+Cast(Transposed(Cast(B10,MAT)),MODULE); --This is the syzygy from the commutator [X*X^t,W]=0. B11:=Concat(Cast(Transposed(X)*W,LIST),Cast(A,LIST),Cast(A,LIST),Cast(-X*Transosed(X),LIST)); --Verify that B11 is a syzygy. P*Cast(B11,MAT); --Make B11 into a module. S:=S+Cast(Transposed(Cast(B11,MAT)),MODULE); --This is the syzygy from the commutator [W*W^t,X]=0. B12:=Concat(Cast(W*Transposed(W),LIST),Cast(A,LIST),Cast(A,LIST),Cast(-Transpoed(W)*X,LIST)); --Verify that B12 is a syzygy. P*Cast(B12,MAT); --Make B12 into a module. S:=S+Cast(Transposed(Cast(B12,MAT)),MODULE); ------------------------------------------- --Second form of syzygies given by the second set of commutators(Theorem 3.1 Formula 2). --This is the syzygy from the commutator [XY^t + YX^t , Z]=0. B13:=Concat(Cast(Transposed(Y)*Z,LIST),Cast(Transposed(X)*Z,LIST),Cast(-X*Tranposed(Y)-Y*Transposed(X),LIST),Cast(A,LIST)); --Verify that B13 is a syzygy. P*Cast(B13,MAT); --Make B13 into a module. S:=S+Cast(Transposed(Cast(B13,MAT)),MODULE); --This is the syzygy from the commutator [XZ^t + ZX^t , Y]=0. B14:=Concat(Cast(Transposed(Z)*Y,LIST),Cast(-(X*Transposed(Z)+Z*Transposed(X))LIST),Cast(Transposed(X)*Y,LIST),Cast(A,LIST)); --Verify that B14 is a syzygy. P*Cast(B14,MAT); --Make B14 into a module. S:=S+Cast(Transposed(Cast(B14,MAT)),MODULE); --This is the syzygy from the commutator [XY^t + YX^t , W]=0. B15:=Concat(Cast(Transposed(Y)*W,LIST),Cast(Transposed(X)*W,LIST),Cast(A,LIST),Cast(-X*Transposed(Y)-Y*Transposed(X),LIST)); --Verify that B15 is a syzygy. P*Cast(B15,MAT); --Make B15 into a module. S:=S+Cast(Transposed(Cast(B15,MAT)),MODULE); --This is the syzygy from the commutator [XW^t + WX^t , Y]=0. B16:=Concat(Cast(Transposed(W)*Y,LIST),Cast(-(X*Transposed(W)+W*Transposed(X)),LIST),Cast(A,LIST),Cast(Transposed(X)*Y,LIST)); --Verify that B16 is a syzygy. P*Cast(B16,MAT); --Make B16 into a module. S:=S+Cast(Transposed(Cast(B16,MAT)),MODULE); --This is the syzygy from the commutator [YZ^t + ZY^t , W]=0. B17:=Concat(Cast(A,LIST),Cast(Transposed(Z)*W,LIST),Cast(Transposed(Y)*W,LIST),Cast(-Y*Transposed(Z)-Z*Transposed(Y),LIST)); --Verify that B17 is a syzygy. P*Cast(B17,MAT); --Make B17 into a module. S:=S+Cast(Transposed(Cast(B17,MAT)),MODULE); --This is the syzygy from the commutator [YW^t + WY^t , Z]=0. B18:=Concat(Cast(A,LIST),Cast(Transposed(W)*Z,LIST),Cast(-(Y*Transposed(W)+W*Transposed(Y)),LIST),Cast(Transposed(Y)*Z,LIST)); --Verify that B18 is a syzygy. P*Cast(B18,MAT); --Make B18 into a module. S:=S+Cast(Transposed(Cast(B18,MAT)),MODULE); --This is the syzygy from the commutator [XZ^t + ZY^t , W]=0. B19:=Concat(Cast(Transposed(Z)*W,LIST),Cast(A,LIST),Cast(Transposed(X)*W,LIST)Cast(-X*Transposed(Z)-Z*Transposed(X),LIST)); --Verify that B19 is a syzygy. P*Cast(B19,MAT); --Make B19 into a module. S:=S+Cast(Transposed(Cast(B19,MAT)),MODULE); --This is the syzygy from the commutator [XW^t + WX^t , Z]=0. B20:=Concat(Cast(Transposed(W)*Z,LIST),Cast(A,LIST),Cast(-(X*Transposed(W)+W*Transposed(X)),LIST),Cast(Transposed(X)*Z,LIST)); --Verify that B20 is a syzygy. P*Cast(B20,MAT); --Make B20 into a module. S:=S+Cast(Transposed(Cast(B20,MAT)),MODULE); ------------------------------------------- --Third form of syzygies given by the third set of commutators (Theorem3.1 Formula 3). --This is from the commutator [Z,Y]J[X,I] + [X,Z]J[Y,I] + [Y,X]J[Z,I] =0. B21:=Concat(Cast(-Y*J*(Z*I-I*Z)+Z*J*(Y*I-I*Y),LIST),Cast(-Z*J*(X*I-I*X)+X*J*(Z*I-I*Z),LIST), Cast(Y*J*(X*I-I*X)-X*J*(Y*I-I*Y),LIST),Cast(A,LIST)); --Verify that B21 is a syzygy. P*Cast(B21,MAT); --Make B21 into a module. S:=S+Cast(Transposed(Cast(B21,MAT)),MODULE); --This is from the commutator [Z,Y]J[X,I] + [X,Z]J[Y,I] + [Y,X]J[Z,I] =0. B22:=Concat(Cast(-Y*I*(Z*J-J*Z)+Z*I*(Y*J-J*Y),LIST),Cast(-Z*I*(X*J-J*X)+X*I*(Z*J-J*Z),LIST), Cast(Y*I*(X*J-J*X)-X*I*(Y*J-J*Y),LIST),Cast(A,LIST)); --Verify that B22 is a syzygy. P*Cast(B22,MAT); --Make B22 into a module. S:=S+Cast(Transposed(Cast(B22,MAT)),MODULE); --This is from the commutator [W,Y]J[X,I] + [X,W]J[Y,I] + [Y,X]J[W,I] =0. B23:=Concat(Cast(-Y*J*(W*I-I*W)+W*J*(Y*I-I*Y),LIST),Cast(-W*J*(X*I-I*X)+X*J*(W*I-I*W),LIST), Cast(A,LIST),Cast(Y*J*(X*I-I*X)-X*J*(Y*I-I*Y),LIST)); --Verify that B23 is a syzygy. P*Cast(B23,MAT); --Make B23 into a module. S:=S+Cast(Transposed(Cast(B23,MAT)),MODULE); --This is from the commutator [W,Y]J[X,I] + [X,W]J[Y,I] + [Y,X]J[W,I] =0. B24:=Concat(Cast(-Y*I*(W*J-J*W)+W*I*(Y*J-J*Y),LIST),Cast(-W*I*(X*J-J*X)+X*I*(W*J-J*W),LIST),Cast(A,LIST), Cast(Y*I*(X*J-J*X)-X*I*(Y*J-J*Y),LIST)); --Verify that B24 is a syzygy. P*Cast(B24,MAT); --Make B24 into a module. S:=S+Cast(Transposed(Cast(B24,MAT)),MODULE); --This is from the commutator [W,Z]J[X,I] + [X,W]J[Z,I] + [Z,X]J[W,I] =0. B25:=Concat(Cast(-Z*J*(W*I-I*W)+W*J*(Z*I-I*Z),LIST),Cast(A,LIST),Cast(-W*J*(X*I-I*X)+X*J*(W*I-I*W),LIST), Cast(Z*J*(X*I-I*X)-X*J*(Z*I-I*Z),LIST)); --Verify that B25 is a syzygy. P*Cast(B25,MAT); --Make B25 into a module. S:=S+Cast(Transposed(Cast(B25,MAT)),MODULE); --This is from the commutator [W,Z]J[X,I] + [X,W]J[Z,I] + [Z,X]J[W,I] =0. B26:=Concat(Cast(-Z*I*(W*J-J*W)+W*I*(Z*J-J*Z),LIST),Cast(A,LIST),Cast(-W*I*(X*J-J*X)+X*I*(W*J-J*W),LIST), Cast(Z*I*(X*J-J*X)-X*I*(Z*J-J*Z),LIST)); --Verify that B26 is a syzygy. P*Cast(B26,MAT); --Make B26 into a module. S:=S+Cast(Transposed(Cast(B26,MAT)),MODULE); --This is from the commutator [W,Z]J[Y,I] + [Y,W]J[Z,I] + [Z,Y]J[W,I] =0. B27:=Concat(Cast(A,LIST),Cast(-Z*J*(W*I-I*W)+W*J*(Z*I-I*Z),LIST),Cast(-W*J*(Y*I-I*Y)+Y*J*(W*I-I*W),LIST), Cast(Z*J*(Y*I-I*Y)-Y*J*(Z*I-I*Z),LIST)); --Verify that B27 is a syzygy. P*Cast(B27,MAT); --Make B27 into a module. S:=S+Cast(Transposed(Cast(B27,MAT)),MODULE); --This is from the commutator [W,Z]J[Y,I] + [Y,W]J[Z,I] + [Z,Y]J[W,I] =0. B28:=Concat(Cast(A,LIST),Cast(-Z*I*(W*J-J*W)+W*I*(Z*J-J*Z),LIST),Cast(-W*I*(Y*J-J*Y)+Y*I*(W*J-J*W),LIST), Cast(Z*I*(Y*J-J*Y)-Y*I*(Z*J-J*Z),LIST)); --Verify that B28 is a syzygy. P*Cast(B28,MAT); --Make B28 into a module S:=S+Cast(Transposed(Cast(B28,MAT)),MODULE); ------------------------------------------ --Now we verify that we have the right syzygy module. --Module defined by the 3 quaternionic variables M:=Module( [x[0],-x[1],-x[2],-x[3]], [x[1],x[0],-x[3],x[2]], [x[2],x[3],x[0],-x[1]], [x[3],-x[2],x[1],x[0]], [y[0], - y[1], - y[2], - y[3]], [y[1], y[0], - y[3], y[2]], [y[2], y[3], y[0], - y[1]], [y[3], - y[2], y[1], y[0]], [z[0], - z[1], - z[2], - z[3]], [z[1], z[0], - z[3], z[2]], [z[2], z[3], z[0], - z[1]], [z[3], - z[2], z[1], z[0]], [w[0],-w[1],-w[2],-w[3]], [w[1],w[0],-w[3],w[2]], [w[2],w[3],w[0],-w[1]], [w[3],-w[2],w[1],w[0]]); --This will output "TRUE" if S is the right syzygy module. S=Syz(M);