input_case nil$ vector p1,p2,p3,p4,p5,p6; g(f,p1); g(f,p1,p2); g(f,p1,p2,p3); g(f,p1,p2,p3,p4); g(f,p1,p2,p3,p4,p5,p6); vector a; g(f,a,p1,p2); g(f,a,p1,p2,p3,p4); g(f,a,p1,p2,p3,p4,p5,p6); g(f,p1)*sub(p2=p3+p4,g(f,p2)); nospur f; g(f,p1,p1); index m; g(f,m,m); g(f,m,p1,m); g(f,m,p1,p2,m); g(f,m,p1,p2,p3,m); g(f,m,p1,p2,p3,p4,m); g(f,m,p1,p2,p3,p4,p5,m); vector m1,m2,m3,n1,n2,n3; array g1(4),g2(4),g3(4),G(4); g1(0):=1$ g1(1):=g(f,a)$ g1(2):=g(f,m1)$ g1(3):=g(f,m1,a)$ g1(4):=(g(f,m1,n1)-g(f,n1,m1))/2$ for i:=0:4 do <>; G(0):="s"$ G(1):="p"$ G(2):="v"$ G(3):="a"$ G(4):="t"$ spur f; for i1:=0:4 do if (r:=g1(i1)) neq 0 then write G(i1)," ",r; for i1:=0:4 do for i2:=i1:4 do if (r:=g1(i1)*g2(i2)) neq 0 then write G(i1),G(i2)," ",r; % Multiplication table for i1:=0:4 do for i2:=0:4 do for i3:=0:4 do if (r:=g1(i1)*g2(i2)*g3(i3)) neq 0 then write G(i1),G(i2),G(i3)," ",r; % Fierz coefficients index m1,n1; for i1:=0:4 do for i2:=0:4 do for i3:=0:4 do if (r:=g1(i1)*g2(i2)*g1(i1)*g3(i3)) neq 0 then write G(i1),G(i1),G(i2),G(i3)," ",r; % Pseudoscalar Fierz coefficients for i1:=0 step 2 until 4 do for i2:=0:4 do for i3:=0:4 do if (r:=g1(i1)*g2(i2)*g1(i1)*g(f,a)*g3(i3)) neq 0 then write G(i1),G(i1),G(i2),G(i3)," ",r; operator sig; for all f,m,n let sig(f,m,n)=(g(f,m,n)-g(f,n,m))/2; vector !!1,!!2; nospur !!; procedure Gexp(f,x); begin scalar y; y:=sub(f=!!,x); spur !!; y:={y,g(!!,a)*y,g(!!,!!1)*y,g(!!,a,!!1)*y,sig(!!,!!2,!!1)/2*y}; nospur !!; return y end$ nospur f; % several examples Gexp(f,g(f,p1,p2)); Gexp(f,g(f,p1,p2,p3)); Gexp(f,g(f,p1,p2,p3,p4)); Gexp(f,g(f,a,p1,p2)); Gexp(f,g(f,a,p1,p2,p3)); Gexp(f,g(f,a,p1,p2,p3,p4)); Gexp(f,g(f,p1)*sig(f,p2,p3)-sig(f,p2,p3)*g(f,p1)); Gexp(f,sig(f,p1,p2)*sig(f,p3,p4)-sig(f,p3,p4)*sig(f,p1,p2)); end;