#### 2.2 &t operators (19.12.97)

##### 2.2.1 Rafal Ablamowicz (23.10.01)

Thanks to all who have replied to my questions regarding the &- type operators in Maple. Your comments and suggestions have been very helpful.

In return, let me show you my code of an multilinear operator &t which is also left-associative. It gives the basic structure of a tensor product of orthogonal Cliﬀord algebras. It is part of a small extension package G[raded] T[tensor] P[roduct] to my ’CLIFFORD’ package to enable computations in graded tensor products of orthogonal Cliﬀord algebras. These algebras are Z2-graded and their graded tensor products are Z2-isomorphic to orthogonal Cliﬀord algebras in higher dimensions. These strange types tensorprod, clipolynom, cliscalar are deﬁned in the two packages.

If anyone is interested in these packages, please e-mail me.

 GTP[&t]:=
proc(a1::{*,+,tensorprod,clipolynom,cliscalar},a2::{cliscalar,clipolynom})
local co,a11,a22,p,i;
if nargs<2 then ERROR(at least two arguments are needed) fi;
if nargs>2 then RETURN(&t(&t(args[1..2]),args[3..nargs])) fi;
if type(a1,+) then RETURN(map(&t,a1,a2))
elif type(a2,+) then RETURN(map2(&t,a1,a2)) fi;
if type(a1,*) and hastype(a1,tensorprod) then
a11:=select(type,a1,tensorprod):
co:=remove(type,a1,tensorprod):
RETURN(co*(&t(a11,a2)))
fi;
if type(a1,*) and not hastype(a1,tensorprod) then a11:=select(type,a1,clibasmon):
co:=remove(type,a1,clibasmon):
RETURN(co*(&t(a11,a2)))
elif type(a2,*) and not hastype(a2,tensorprod) then a22:=select(type,a2,clibasmon):
co:=remove(type,a2,clibasmon):
RETURN(co*(&t(a1,a22)))
fi;
p:=args[1];for i from 2 to nargs do p:='&t'(p,args[i]) od;
RETURN(p);
end: