{VERSION 3 0 "IBM INTEL NT" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 632 "###\n### Bigbrcd-0 .16.mws of Dec-16-99 -- Dec-20-2001 BF/RA.\n###\n### VERSION 0.16 \n### \n### Copyright Rafal Ablamowicz (\247) & Bertfried Fauser(*)\n###\n### (\247) Department of Mathemati cs, Box 5054\n### Tennessee Technological University\n### Co okeville, TN 38505 \n### U.S.A.\n### rablamowicz@tntech.edu \n### http://math.tntech.edu/rafal/\n###\n### (*) Universit\"at \+ Konstanz\n### Fachbereich Physik\n### Fach M678\n### 78 457 Konstanz\n### Germany\n### Bertfried.Fauser@uni-konstanz .de\n### http://kaluza.physik.uni-konstanz.de/~fauser/ \n### \nrestart: " }}{PARA 0 "" 0 "" {TEXT -1 588 "First of all we define \+ some useful types. The types are inclusive, that is, we have\ni) t ensorbasmonom, which is a tensor which clibasmonoms as entries\nii) \+ tensormonom, which is also a tensorbasmonom, but may have a cliscala r prefactor\niii) tensorpolynom, which is a sum of tensorbasmonoms\n \ntype(&t(e1,e2,e3),tensorbasmonom) -> true\ntype(a*&t(e1,e2),tensor basmonom) -> false\n\ntype(a*&t(e1,e2),tensormonom) -> true\ntyp e( &t(e2,e3),tensormonom) -> true\ntype(a*&t(e1,e2)+b*&t(e3,e1 ),tensormonom) -> false\n\ntype(a*&t(e1,e2)+b*&t(e3,e1),,tensorpoly nom) -> true\n\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 793 "## No 1.\n# #\nBigebra[`type/tensorbasmonom`]:=proc(p)\n option inline,\n \+ `Copyright (c) R. Ablamowicz, B. Fauser 1999/02. All rights reserved.` ; \n evalb(`&t`=op(0,p))\nend:\n\n## No 2.\n##\nBigebra[`type/tensorm onom`]:=proc(p)\n option inline,\n `Copyright (c) R. Ablamowic z, B. Fauser 1999/02. All rights reserved.`;\n if type(p,`tensorbasmo nom`) then RETURN(true) fi; \n if type(p,`*`) and 1<>select(type,p,`t ensorbasmonom`) then\n true;\n else\n false \n fi;\nend:\n\n## No 3.\n##\nBigebra[`type/tensorpolynom`]:=proc(p) \n option inline, \n `Copyright (c) R. Ablamowicz, B. Fauser 1999/02. All rights \+ reserved.`; \n if type(p,`tensormonom`) then RETURN(true) fi:\n if t ype(p,`+`) then \n RETURN(evalb(map(type,\{op(p)\},tensormonom)=\{t rue\}))\n else\n RETURN(false);\n fi\nend:\n\n" }{TEXT -1 158 "do _compose([1,2,3]) yields a Grassmann multivector composed from this in dices:\n\ndo_compose([1,2,3]) -> e1we2we3\ndo_compose([2,1,4]) -> e2 we1we4 = -e1we2we4" }{MPLTEXT 1 0 9387 "\n\n## No 4.\n##\n## REPLACED BY Cliff5[makeclibasmon]\n##\nBigebra[`do_compose`]:=proc(x)\n local list,result,N,i;\n option remember,inline, ## inline option speeds \+ up!\n `Copyright (c) R. Ablamowicz, B. Fauser 1999/02. All righ ts reserved.`; \n list:=x;\n N:=nops(list);\n if N = 0 then RETURN( Id); fi;\n result := cat(e,x[1]);\n for i from 2 to N do\n \+ result:=cat(result,cat(we,x[i]));\n od:\n RETURN(result);\nend:\n \n\n## No 5.\n##\nBigebra[`gco_monom`]:=proc(x,name)\n local fun,a,li st1,list2,du1,du2,NL,NP,NR,vz,i,j;global _CLIENV;\n option `Copyright (c) R. Ablamowicz, B. Fauser 1999/02. All rights reserved.`;\n list1 :=Cliff5[extract](x,integers):\n NL:=nops(list1);\n fun:=proc(a1) op tion inline; a1 end:\n for i from 1 to NL do\n fun(i):=list1[i];\n od:\n a:=[seq(i,i=1..NL)]:\n list2:=[a]:\n for i in a do\n lis t2 := [op(subs(i = NULL,list2)), op(list2)]:\n od:\n NP:=nops(list2) +1; ## added 1 here\n add((_CLIENV[_QDEF_PREFACTOR])^(add(list2[i][j ]-j,j=1..nops(list2[i])))* \n `name`(Cliff5[makeclibasmon](map(fun ,list2[i])),\n Cliff5[makeclibasmon](map(fun,list2[NP-i]))) ,i=1..NP-1);\n end:\n\n\n## No 6.\n##\nBigebra[`&gco`]:=proc(x,i) \n \+ local co,term,xx,a,b,c;\n option `Copyright (c) R. Ablamowicz, B. Fa user 1999/02. All rights reserved.`;\n\n if type(x,clibasmon) then \n RETURN(gco_monom(x,`&t`));\n elif type(x,climon) then\n co,t erm:=select(type,x,cliscalar),remove(type,x,cliscalar);\n RETURN(ex pand(co*gco_monom(term,`&t`)));\n elif type(x,clipolynom) then\n R ETURN(expand(map('procname',x)));\n elif type(x,tensorbasmonom) then \n if nops([op(x)]) = 1 then\n RETURN(gco_monom(op(x),`&t`)); \n fi;\n xx:=op(x);\n a:=xx[1..i-1];\n b:=xx[i];\n c:=x x[i+1..nops([xx])];\n RETURN(&t(a,gco_monom(b,`&t`),c));\n elif ty pe(x,tensormonom) then\n co,term:=remove(type,x,tensorbasmonom),sel ect(type,x,tensorbasmonom);\n RETURN(expand(co*procname(term,i))); \n elif type(x,tensorpolynom) then\n RETURN(map('procname',x,i))\n else ERROR(`wrong type in &gco`)\n fi:\nend:\n\n## No 7a. Grassman n co-product of hyperplanes \n##\nBigebra[`gpl_co_monom`]:=proc(x,name )\n local b,NL;\n global _CLIENV,dim_V;\n option `Copyright (c) Abl amowicz, Fauser 1999/02. All rights reserved.`;\n b:=&gco(Cliff5[make clibasmon]([seq(i,i=1..dim_V)]));\n NL:=nops(Cliff5[extract](x));\n \+ (-1)^((dim_V-1)*NL)*&map(name(b,x),2,wedge);\nend:\n\n\n## No 7a. Gra ssmann co-product of hyperplanes \n##\nBigebra[`gpl_co_monom2`]:=proc( x,name)\n local b,NL;\n global _CLIENV,dim_V;\n option `Copyright ( c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n b:=&gco(Cliff 5[makeclibasmon]([seq(i,i=1..dim_V)]));\n NL:=nops(Cliff5[extract](x) );\n &map(name(x,b),1,wedge);\nend:\n\n\n## No 8. Grassmann co-produ ct of hyperplanes (Pluecker coordinates)\n##\nBigebra[`&gpl_co`]:=proc (x,i) \n local co,term,xx,a,b,c;\n option `Copyright (c) R. Ablamowi cz, B. Fauser 1999/02. All rights reserved.`;\n\n if type(x,clibasm on) then\n RETURN(gpl_co_monom(x,`&t`));\n elif type(x,climon) the n\n co,term:=select(type,x,cliscalar),remove(type,x,cliscalar);\n \+ RETURN(expand(co*gpl_co_monom(term,`&t`)));\n elif type(x,clipolyno m) then\n RETURN(expand(map('procname',x)));\n elif type(x,tensorb asmonom) then\n if nops([op(x)]) = 1 then\n RETURN(gpl_co_mono m(op(x),`&t`));\n fi;\n xx:=op(x);\n a:=xx[1..i-1];\n b:=x x[i];\n c:=xx[i+1..nops([xx])];\n RETURN(&t(a,gpl_co_monom(b,`&t `),c));\n elif type(x,tensormonom) then\n co,term:=remove(type,x,t ensorbasmonom),select(type,x,tensorbasmonom);\n RETURN(expand(co*pr ocname(term,i)));\n elif type(x,tensorpolynom) then\n RETURN(map(' procname',x,i))\n else ERROR(`wrong type in &gpl_co`)\n fi:\nend:\n \n## No 9. dotted Grassmann co-product on Clifford polynoms (wrapper \+ only)\n########################################################\n## Ch anged matF to F and matFM to -F by Rafal/12-25-2001\n################# #######################################\nBigebra[`gco_d_monom`]:=proc( x) \n local u; \n option `Copyright (c) R. Ablamowicz, B. Fauser 199 9/02. All rights reserved.`; \n u := proc (z) convert(z,wedge_to_dwe dge,F) end; \n mapop(mapop(`&gco`(convert(x,dwedge_to_wedge,-F)),1,u) ,2,u) \nend:\n\n## No 10. dotted Grassmann co-product computed in the undotted basis\n##\nBigebra[`&gco_d`]:=proc(x, i) \n local co, term, xx, a, b, c; \n option `Copyright (c) R. Ablamowicz, B. Fauser 1999/ 02. All rights reserved.`; \n \n if not type(Cli5plus,table) then \n \+ WARNING(`Need to load Cli5plus.....`); \n with(Cli5plus) \n fi; \n if type(x,clibasmon) then \n RETURN(gco_d_monom(x,`&t`)) \n e lif type(x,climon) then \n co, term := select(type,x,cliscalar), re move(type,x,cliscalar); \n RETURN(expand(co*gco_d_monom(term,`&t`)) ) \n elif type(x,clipolynom) then \n RETURN(expand(map('procname', x))) \n elif type(x,tensorbasmonom) then \n if nops([op(x)]) = 1 t hen \n RETURN(gco_d_monom(op(x),`&t`)) \n fi; \n xx := op(x ); \n a := xx[1 .. i-1]; \n b := xx[i]; \n c := xx[i+1 .. nop s([xx])]; \n RETURN(`&t`(a,gco_d_monom(b,`&t`),c)) \n elif type(x, tensormonom) then \n co, term := remove(type,x,tensorbasmonom), sel ect(type,x,tensorbasmonom); \n RETURN(expand(co*procname(term,i))) \+ \n elif type(x,tensorpolynom) then \n RETURN(map('procname',x,i)) \+ \n else ERROR(`wrong type in &gco_d`) \n fi \nend:\n\n\n## No 11. \n##\nBigebra[make_BI_Id]:=proc()\n global dim_V, B,BI,BI_Id;\n loca l n,m,i,bas,res;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. \+ All rights reserved.`;\n if evalb(dim_V='dim_V') then\n ERROR(`glo bal variable dim_V must be assigned`);\n else\n if not type(BI,mat rix) then\n BI:=linalg[matrix](dim_V,dim_V):\n fi;\n res:=[ ]:\n for i from 0 to dim_V do\n bas:=cbasis(dim_V,i);\n r es:=[op(res),seq(seq([Cliff5[scalarpart](Cliff5[LC](bas[n],bas[m],BI)) ,bas[n],bas[m]],\nn=1..nops(bas)),m=1..nops(bas))]; \n od:\n BI_ Id:=res;\n add(BI_Id[i][1]*&t(BI_Id[i][2],BI_Id[i][3]),i=1..nops(BI _Id));\n fi;\nend:\n\n\n## No 12.\n##\nBigebra[cco_monom]:=proc(x)\n \+ global BI_Id;\n local i,cf,term,res,a,b,lst,k;\n option `Copyright \+ (c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n if type(x,cl ibasmon) then\n if x = Id then \n RETURN(add(BI_Id[i][1]*&t(BI _Id[i][2],BI_Id[i][3]),i=1..nops(BI_Id)));\n else\n res:=0:\n \+ lst:=[op(&gco(x,1))];\n for k in lst do\n a,b:=peek(k ,1);\n res:=res+add(BI_Id[i][1]*&t(a,BI_Id[i][2],BI_Id[i][3],op (b)),i=1..nops(BI_Id)); \n od;\n RETURN(&map(&map(res,3,`&w` ),1,`&w`));\n fi;\n elif type(x,climon) then\n cf,term:=select( type,x,`cliscalar`),remove(type,x,`cliscalar`);\n RETURN(expand(cf* procname(term)));\n elif type(x,clipolynom) then\n RETURN(map(proc name,x)); \n else\n ERROR(`received unknown type in cco_monom t o process`);\n fi;\nend:\n\n## No 13.\n##\nBigebra[`&cco`]:=proc(x,i) \n local la,ars,func,co,term,res,j,xx,a,b,c,bl,aa,ff,p,L;\n option \+ `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n i f x=0 then RETURN(0) fi; \n if type(x,\{clipolynom,climon,clibasmon\} ) then\n RETURN(Bigebra[cco_monom](x));\n elif type(x,tensorbasmon om) then\n if nops([op(x)]) = 1 then\n RETURN(Bigebra[cco_mono m](op(x)));\n fi;\n xx:=op(x);\n a:=xx[1..i-1];\n b:=xx[i] ;\n c:=xx[i+1..nops([xx])];\n RETURN(&t(a,Bigebra[cco_monom](b), c)); \n elif type(x,tensormonom) then\n co,term := select(type,x,c liscalar),remove(type,x,cliscalar);\n RETURN(expand(co*procname(ter m,i)))\n elif type(x,tensorpolynom) then\n L:=[op(x)]:\n RETURN (add(procname(m,i),m=L))\n else ERROR(`wrong type in &cco`)\n fi:\ne nd:\n\n## No 14.\n##\nBigebra[gco_unit]:=proc(x,i)\n local a,b,cf,ter m;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights res erved.`;\n if type(x,tensorbasmonom) then\n if nops([op(x)]) = 1 t hen\n RETURN(scalarpart(op(x))*Id);\n else\n a,b:=peek(x, i);\n RETURN(scalarpart(a)*b);\n fi;\n elif type(x,tensormono m) then\n cf,term:=select(type,x,`cliscalar`),remove(type,x,`clisca lar`);\n RETURN(cf*gco_unit(term,i));\n elif type(x,tensorpolynom) then\n map(gco_unit,x,i);\n elif\n type(x,clibasmon) then\n \+ RETURN(scalarpart(x)*Id);\n elif x=0 then\n RETURN(0);\n else \n ERROR(`Wrong type in gco_unit, can process only tensorpolynoms`) ;\n fi; \nend:\n\n## No 15.\n##\nBigebra[switch]:=proc(x,i)\n loca l cf,term,a,L,res,n1,n2,b,res2;\n option `Copyright (c) Ablamowicz, F auser 1999/02. All rights reserved.`;\n if type(x,tensorbasmonom) the n\n L:=op(x);\n a:=L[i];\n b:=L[i+1];\n RETURN(&t(L[1..i-1 ],b,a,L[i+2..nops([L])]));\n elif type(x,tensormonom) then\n cf,te rm:=select(type,x,'cliscalar'),remove(type,x,`cliscalar`);\n RETURN (expand(cf*procname(term,i)));\n elif type(x,`+`) then\n map(procn ame,expand(x),i);\n else\n ERROR(`Wrong type in switch`);\n fi;\n end:\n\n## No 16.\n##\nBigebra[gswitch]:=proc(x,i)\n local cf,term,a, L,res,n1,n2,b,res2;global _CLIENV;\n option `Copyright (c) Ablamowicz , Fauser 1999/02. All rights reserved.`;\n if type(x,tensorbasmonom) \+ then\n L:=op(x);\n a:=L[i];\n b:=L[i+1];\n RETURN((_CLIENV [_QDEF_PREFACTOR])^(nops(Cliff5[extract](a))*\n nops(Cliff5[ extract](b)))*&t(L[1..i-1],b,a,L[i+2..nops([L])]));\n elif type(x,ten sormonom) then\n cf,term:=select(type,x,'cliscalar'),remove(type,x, `cliscalar`);\n RETURN(expand(cf*gswitch(term,i)));\n elif type(x, `+`) then\n map(gswitch,expand(x),i);\n else\n ERROR(`Wrong typ e in gswitch`);\n fi;\nend:\n\n" }{TEXT -1 306 "peek(x,i) -> select s the ith argument of a tensorbasmonom or tensormonom\n \+ returns a sequence of the peeked element and the remainder of the tensor\n this function makes sense o nly on tesor(bas)monoms\n\npeek(a*&t(e1,e2we3,e4),2) -> a*e2we3 , \+ &t(e1,e4)" }{MPLTEXT 1 0 665 "\n## No 17.\n##\nBigebra[peek]:=proc(x,i )\n local a,b,L,cf,term;\n option `Copyright (c) Ablamowicz, Fauser \+ 1999/02. All rights reserved.`;\n if type(x,tensorbasmonom) then\n \+ L:=op(x);\n if nops([L]) = 1 then\n RETURN(L,&t(Id));\n el se\n a:=op(i,[L]);\n b:=&t(L[1..i-1],L[i+1..nops([L])]);\n \+ RETURN(a,b);\n fi;\n elif type(x,tensormonom) then\n cf,ter m:=select(type,x,`cliscalar`),remove(type,x,`cliscalar`);\n a,b:=pr ocname(term,i);\n RETURN(cf*a,b);\n elif type(x,tensorpolynom) the n\n L:=op(x):\n RETURN(seq([peek(term,i)],term=L));\n else \n \+ ERROR(`wrong type, only tensorbasmonom and tensormonom allowed in pe ek`)\n fi:\nend:\n\n\n" }{TEXT -1 283 "poke(x,y,i) -> poke places \+ the cliffordpolynom y at place i into the tensor(poly,basmo,mo)nom\n \+ poke is meaningfull on tensorpolynoms als o\n\npoke(&t(e1,e3),e2,2) -> &t(e1,e2,e3)\npoke(a*&t(e1,e2)+b*&t(e3, e4),e5,1) -> a*&t(e5,e1,e2) + b*&t(e5,e3,e4)" }{MPLTEXT 1 0 1193 " \n\n## No 18.\n##\nBigebra[poke]:=proc(x,y,i)\n local L,co,term,a,b; \n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reser ved.`;\n if type(y,\{clibasmon,climon,clipolynom\}) then\n if type (x,tensorbasmonom) then\n if nops([op(x)]) = 1 then\n if i = 1 then\n RETURN(Bigebra[tcollect](&t(y,op(x))));\n \+ else\n RETURN(Bigebra[tcollect](&t(op(x),y)));\n fi;\n else \n L:=op(x):\n a:=L[1..i-1];\n b:=L[i. .nops([L])];\n RETURN(Bigebra[tcollect](&t(a,y,b)));\n fi; \n elif type(x,tensormonom) then\n co,term:=select(type,x,`cli scalar`),remove(type,x,`cliscalar`):\n RETURN(co*procname(term,y, i))\n elif type(x,tensorpolynom) then\n L:=op(x);\n RETUR N(add(procname(term,y,i),term=L));\n elif type(x,\{clibasmon,climon ,clipolynom\}) then\n if i=1 then \n RETURN(&t(y,x)) \n \+ else \n RETURN(&t(x,y)) \n fi:\n else\n ERROR(` unknown type in poke`)\n fi:\n else \n ERROR(`second argument i n poke must be a clipolynom`);\n fi:\nend:\n\n\n\n## No 20.\n##\nBige bra[tcollect]:=proc(x)\n option `Copyright (c) Ablamowicz, Fauser 199 9/02. All rights reserved.`;\n collect(x,`&t`);\nend:\n\n" }{TEXT -1 755 "pairing(x,y) -> < LCbig(x,y) > = < x | y~ > nach Lounesto\n \+ This is a relative concept\n\ncontract (x,i,f) -> contracts two arguments at place i,i+1 to a scalar\n \+ contract(&t(e1,e2,e3),2,pairing) -> \+ B[2,3]*&t(e1)\n\nbracket(x) -> Peano bracket as used by Rota, Stein , etc. used the globat variable dim\n b racket(&w(a1,...,an)) -> 0 if n <> dim\n \+ -> det( ai . e j) = pairing( &w(a1,...,an),&w(e1,...en))\n\nmeet1(x,y) -> x(1) \+ * bracket(x(2),y) (relative to dim !!!)\nmeet2(x,y) -> bracket (x,y(1)) * y(2) (relative to dim, equivalent to definition meet1) \n\n" }{MPLTEXT 1 0 1126 "## No 21.\n##\nBigebra[pairing]:=proc(x,y)\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reserve d.`;\n if nargs=3 then \n Cliff5[scalarpart](Cliff5[LC](x,y,args[3 ]))\n else\n Cliff5[scalarpart](Cliff5[LC](x,y))\n fi\nend:\n\n## No 22.\n##\nBigebra[contract]:=proc(x,i,f)\n local n,a,b,t,cf,term; \n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reser ved.`;\n if type(x,tensorbasmonom) then\n if nops([op(x)]) <= 1 th en\n ERROR(`Tensor with two args at least needed`);\n elif nop s([op(x)]) = 2 then\n RETURN(f(op(x)));\n fi;\n a,t:=peek(x ,i);\n b,t:=peek(t,i);\n RETURN(f(a,b)*t);\n elif type(x,tensor monom) then\n cf,term:=select(type,x,`cliscalar`),remove(type,x,`cl iscalar`);\n RETURN(cf*procname(term,i,f));\n elif type(x,tensorpo lynom) then\n map(procname,x,i,f);\n else\n ERROR(`Wrong type i n pairing, can process only tensorpolynoms of grade higher than two`); \n fi; \nend:\n\n## No 23.\n##\nBigebra[bracket]:=proc()\n global \+ dim_V;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reserved.`; \n coeff(&w(args),&w(seq(cat(e,i),i=1..dim_V)));\nen d:\n\n" }{TEXT -1 337 "meet1 = &v and meet2 are two variants of the me et (accessible via the &v product and meet1)\nboth definitions are equ ivalent due to co-comutativity. They work with non-symmetric\nbilinear forms also: \nThe &v is the dual of the &w (wedge), it computes the c ommon factor (up to a constant)\nof two blades\n\n&v(e1we2we3,e2we3) - > const * e2we3" }{MPLTEXT 1 0 2396 "\n\n## No 24.\n##\nBigebra[`&v`] :=proc(x,y) ### function `meet1`\n local xx,res,lst,var_i,v1,v2 ;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights rese rved.`; \n xx:=&gco(x,1);\n if op(0,xx) = `+` then\n lst :=[op(xx)];\n else\n lst:=[xx];\n fi;\n res:=0;\n for var_i in \+ lst do\n v1,v2:=peek(var_i,1);\n res := res + v1*bracket(&w(op(v 2),y));\n od;\n res;\nend:\n\n## No 25.\n##\nBigebra[meet]:=proc(x,y ) ### function `meet2`\n local yy,res,lst,var_i,v1,v2;\n optio n `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n \+ yy:=&gco(y,1);\n if op(0,yy) = `+` then\n lst:=[op(yy)];\n else \n lst:=[yy];\n fi;\n res:=0;\n for var_i in [op(yy)] do\n v1 ,v2:=peek(var_i,1);\n res := res + bracket(&w(x,v1))*op(v2);\n od; \n res;\nend:\n\n## No 26.\n## Not available yet\nhodge:=proc(x,i)\n \+ local sign,idx,newidx,k,L,a,cf,term;\n global dim_V;\n option `Copy right (c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n if typ e(x,tensorbasmonom) then\n L:=op(x);\n if nops([L]) = 1 then\n \+ RETURN(&t(LCbig(L,&w(seq(e.k,k=1..dim_V)))));\n else\n a:= LCbig(L[i],&w(seq(e.k,k=1..dim_V))); \n RETURN(&t(L[1..i-1],a,L[i +1..nops([L])]));\n fi \n elif type(x,tensormonom) then\n cf,te rm:=select(type,x,`cliscalar`),remove(type,x,`cliscalar`);\n RETURN (cf*procname(term,i)); \n elif type(x,tensorpolynom) then\n RET URN(map(procname,x,i)); \n elif type(x,`\{clibasmon,climon,clipolyno m\}`) then\n RETURN(LCbig(x,&w(seq(e.k,k=1..dim_V))));\n else\n \+ ERROR(`No known type, cannot process`,x);\n fi\nend:\n\n## No 27.\n# #\nBigebra[gantipode]:=proc(x,i)\n local n,a,b,cf,term;global _CLIENV ;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights rese rved.`;\n if type(x,tensorbasmonom) then\n if nops([op(x)]) = 1 th en\n n:=nops(Cliff5[extract](op(x)));\n RETURN(_CLIENV[_QDEF _PREFACTOR]^(n)*x);\n fi;\n a,b:=peek(x,i);\n n:=nops(Cliff5[ extract](a));\n RETURN(poke(b,_CLIENV[_QDEF_PREFACTOR]^(n)*a,i)); \n elif type(x,tensormonom) then\n cf,term:=select(type,x,`cliscal ar`),remove(type,x,`cliscalar`);\n RETURN(cf*procname(term,i));\n \+ elif type(x,tensorpolynom) then\n map(procname,x,i);\n elif type(x ,\{clibasmon,climon,clipolynom\}) then\n RETURN(Cliff5[gradeinv](x) );\n elif x=0 then\n RETURN(0);\n else\n ERROR(`Wrong type in \+ gantipode, can process only clipolynoms and tensorpolynoms`);\n fi; \+ \nend:\n\n\n" }{TEXT -1 172 "&map maps a function of two arguments an d one output (i.e. a product) onto the i,i+1 th tensor\nfactors of a t ensorpolynom\n\n&map(&t(e1,e2,e3,e4),2,`&w`) -> &t(e1,e2we3,e4)" } {MPLTEXT 1 0 600 "\n\n\n## No 28.\n##\nBigebra[`&map`]:=proc(x,i,f)\n \+ local cf,term,L,a,b,ARGS;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n if nargs >3 then ARGS:=args[4..-1] else ARGS:=NULL fi;\n if type(x,tensorbasmonom) then\n L:=op(x): \n a:=L[1..i-1]:\n b:=L[i+2..nops([L])];\n `&t`(a,displayid(f (L[i],L[i+1],ARGS)),b);\n elif type(x,tensormonom) then\n cf,term: =remove(type,x,`tensorbasmonom`),select(type,x,`tensorbasmonom`);\n \+ RETURN(cf*&map(term,i,f,ARGS));\n elif type(x,`+`) then\n map(`&m ap`,expand(x),i,f,ARGS);\n else\n ERROR(`Wrong type in &map`);\n \+ fi;\nend:\n\n" }{TEXT -1 246 "mapop(x,i,LinOp) -> maps a function (Li near Operator) onto the ith slot of a tensor(bas,mon,poly)om\n \+ if a clipolynom is given the functio n applys the LinOp to this.\n\nmapop(&t(e1,e2),2,S) -> &t(e1,S(e2)) " }{MPLTEXT 1 0 3018 "\n\n## No 29.\n##\nBigebra[mapop]:=proc(x,i,LinO p)\n local L,a,b,c,cf,term;\n option `Copyright (c) Ablamowicz, Faus er 1999/02. All rights reserved.`;\n if type(x,tensorbasmonom) then\n L:=[op(x)];\n if 1=nops(L) then \n RETURN(&t(LinOp(op(x))) ) \n else\n a:=L[1..i-1];\n b:= LinOp(L[i]);\n c:=L[ i+1..-1];\n if a=[] then a:=[] fi;\n if c=[] then c:=[] fi; \n RETURN(&t(op(a),b,op(c)));\n fi; \n elif type(x,tensormon om) then\n cf,term:=select(type,x,`cliscalar`),remove(type,x,`clisc alar`);\n RETURN(cf*procname(term,i,LinOp)); \n elif type(x,ten sorpolynom) then\n RETURN(map(procname,x,i,LinOp)); \n elif type( x,\{clibasmon,climon,clipolynom\}) then\n RETURN(LinOp(x));\n else \n ERROR(`Unknown type in mapop, cannot process`,x);\n fi\nend:\n \n## No 30.\n##\nBigebra[mapop2]:=proc(x,i,LinOp2)\n local L,a,cf,ter m;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights res erved.`;\n if type(x,tensorbasmonom) then\n L:=op(x);\n if nops ([L]) < 2 then \n ERROR(`mapop2 needs at least a two-tensor as in put`);\n elif nops([L]) = 2 then\n RETURN(LinOp2(x))\n fi; \+ \n a:=LinOp2(&t(L[i],L[i+1]));\n RETURN(&t(L[1..i-1],a,L[i+2..nops ([L])])); \n elif type(x,tensormonom) then\n cf,term:=remove(type, x,`tensorbasmonom`),select(type,x,`tensorbasmonom`);\n RETURN(cf*pr ocname(term,i,LinOp2)); \n elif type(x,tensorpolynom) then\n RE TURN(map(procname,x,i,LinOp2)); \n else\n ERROR(`Unknown type in \+ mapop2, cannot process`,x);\n fi\nend:\n\n## No 31.\n##\nBigebra[tsol ve1]:=proc(eq,indet,covectors)\n local i,TT,vec,CV,co_vec,vars,sol,sy s,tmp_eq;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rig hts reserved.`;\n if type(indet,list) then\n vars:=convert(indet,s et);\n else\n vars:=select(type,indets(indet),indexed);\n fi;\n \+ if type(covectors,list) then\n CV:=convert(covectors,set);\n else \n CV:=select(type,indets(covectors),indexed);\n fi;\n sys:=\{\}: \n for i from 1 to nops(CV) do\n tmp_eq:=coeff(eq,CV[i]);\n TT: =Cliff5[cliterms](tmp_eq);\n sys:=sys union \{coeffs(tmp_eq,TT)\}; \n od:\n sol:=[solve(sys,vars)];\n RETURN(sol); \n end:\n\n\n## No 32.\n##\nBigebra[EV]:=proc(x,y)\n local cf,term,lst,i,n;\n option ` Copyright (c) Ablamowicz, Fauser 1999/02. All rights reserved.`;\n if x=0 or y=0 then RETURN(0) fi;\n if type(x,clibasmon) then\n if ty pe(y,clibasmon) then\n if Cliff5[extract](x,`integers`) = Cliff5[ extract](y,`integers`) then\n RETURN(1);\n else\n R ETURN(0);\n fi;\n elif type(y,climon) then\n cf,term:=sel ect(type,y,`cliscalar`),remove(type,y,`cliscalar`);\n RETURN(cf*p rocname(x,term));\n elif type(y,clipolynom) then\n lst:=[op(y) ]:\n RETURN(add(procname(x,lst[i]),i=1..nops(lst)));\n else\n \+ ERROR(`Wrong type in EV`);\n fi;\n elif type(x,climon) then\n cf,term:=select(type,x,`cliscalar`),remove(type,x,`cliscalar`);\n \+ RETURN(cf*procname(term,y));\n elif type(x,clipolynom) then\n R ETURN(map(procname,x,y));\n else\n ERROR(`Wrong type in EV`);\n f i; \nend:\n\n" }{TEXT -1 67 "Use EV (eval) instead of epsilon!\nEpsilo n is no longer supported!\n\n" }{MPLTEXT 1 0 2839 "## No 33.\n##\nBige bra[eps]:=proc(x,i)\n local cf,term,lst,n;\n option `Copyright (c) A blamowicz, Fauser 1999/02. All rights reserved.`;\n if type(x,clibasm on) then\n lst:=Cliff5[extract](x,`integers`);\n n:=nops(lst);\n if lst = i then\n RETURN(1);\n else\n RETURN(0);\n \+ fi;\n elif type(x,climon) then\n cf:=select(type,x,`cliscalar`); \n if nops([cf]) > 1 then\n cf := map(`*`,cf);\n fi;\n t erm:=x/cf;\n RETURN(cf*procname(term,i));\n else\n map(procname ,x,i);\n fi; \nend:\n\n## No 34.\n##\nBigebra[linop]:=proc(x,R)\n lo cal bas,i,j;\n global dim_V;\n option `Copyright (c) Ablamowicz, Fau ser 1999/02. All rights reserved.`;\n bas:=cbasis(dim_V);\n Cliff5[c licollect](simplify(add(add(R[i,j]*EV(bas[j],x)*bas[i],i=1..2^dim_V),j =1..2^dim_V))); end:\n\n## No 35.\n##\nBigebra[linop2]:=proc(x,MAT)\n local res,co,erg1,erg2,bas,i,j,a,b,lst,terms,tr_table;\n global dim _V;\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All rights re served.`; \n bas:=cbasis(dim_V);\n tr_table:=table([seq(bas[i] =i,i=1..2^dim_V)]):\n if type(x,tensormonom) then\n lst:=[x]:\n e lif type(x,tensorpolynom) then\n lst:=[op(x)]:\n else\n ERROR(` assumed first argument to be a 2-tensor`);\n fi;\n res:=0:\n for te rms in lst do\n erg1,erg2 := peek(terms,1);\n if type(erg1,cliba smon) then\n co:=1;\n else\n co,erg1:=select(type,erg1,cl iscalar),remove(type,x,`cliscalar`);\n fi; \n a:=tr_table[erg1]: \n b:=tr_table[op(erg2)]:\n for i from 1 to 2^dim_V do\n for \+ j from 1 to 2^dim_V do\n res := res + co*&t(bas[i],bas[j])*MAT[4* (i-1)+j,4*(a-1)+b];\n od:od: \n od:\n res;\nend:\n\n## No 36.\n# #\nBigebra[VERSION]:=proc()\n option `Copyright (c) Ablamowicz, Fau ser 1999/02. All rights reserved.`; \n print(`<==================== =========================>`);\n print(` \260\260Bi-Gebra Package V ERSION 0.16 for Cliff5 `);\n print(` by Rafal Ablamowicz(\247) \+ and Bertfried Fauser(*) `);\n print(` (c) Dec-16-99 / Dec-04-2 001 `);\n print(` Available from http://math.tntec h.edu/rafal/ `);\n print(` \+ `);\n print(` (\247) Department of Mathematics, Box 5054 \+ `);\n print(` Tennessee Technological University `);\n print(` Cookeville, TN 38505, U.S.A. `);\n pri nt(`rablamowicz@tntech.edu http://math.tntech.edu/rafal/`);\n print (` (*) Universit\"at Konstanz `);\n print(` \+ Fachbereich Physik, Fach M678 `);\n print(` 78457 Konstanz, Germany `);\n print(`Bertfried.Fauser@u ni-konstanz.de http://clifford.physik.uni-konstanz.de/~fauser/`);\n \+ print(` `);\n print( ` BUG-REPORTS to ->Bertfried Fauser<- `);\n print(`<===== ========================================>`);\nend:\n\n" }{TEXT -1 166 "This function allows one to drop the tensor sign in expressions \nlik e drop_t(`&t`(e1)) = e1, the function makes sense only iff\nthe argume nt is a tesnor of rank one. " }{MPLTEXT 1 0 187 "\n\n## No 37.\n##\nB igebra[drop_t]:=proc(x)\n option `Copyright (c) Ablamowicz, Fauser 19 99/02. All rights reserved.`; \n local null;\n null:=proc(x) x; end: \n eval(subs(`&t`=null,x));\nend:\n\n" }{TEXT -1 246 "remove_eq remov es equantions from a set of equations iff the\nevaluate to boolean tru e. This functin is intened to be used in\nsets of solutions where we i nserted variables which are not\nrestricted by the equation.\n\nmap(re move_eq,\{x=x,x=y\}) = \{x=y\}" }{MPLTEXT 1 0 157 "\n\n## No 38.\n##\n Bigebra[remove_eq]:=proc(x)\n option `Copyright (c) Ablamowicz, Fause r 1999/02. All rights reserved.`; \n if evalb(x) then ; else x; fi;\n end:\n" }}{PARA 0 "" 0 "" {TEXT -1 582 "\n\n\n%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%\n%\n% Some functions follow, which patch the \+ Maple V define(...) function:\n% There have been several bugs, which h ave been fixed, see documentation\n% in worksheet bug2.mws and def_ske l1.mws\n%\n% `define/skeleton' was mainly changed for the FLAT option, a bug in the `for Define_i in Define_look do`\n% statement had to be \+ fixed to. Cliscalars have been used as constants.\n% The option 'LINEA R` was altered to know type 'cliscalar' of CLIFFORD, but was NOT CHECK ED\n% for correctness!!\n%\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%" }{MPLTEXT 1 0 2 "\n\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3219 " ## Patch for Maple V No 1.\n##\n`define/skeleton`:=proc () \n local a ,b,Define_Arguments, Define_look, Define_cf, Define_term, Define_i, De fine_a; \n options `Automatically generate the define() function of M aple`, \n `Copyright (c) 1996 Waterloo Maple Inc. All rights reserved .`;\n#####\n if _ORDERLESS then \n Define_Arguments := op(sort([ar gs],'address')) \n else \n Define_Arguments := args \n fi;\n##### \n if _FLAT then\n Define_look := args;\n if has([Define_look], procname) then \n Define_Arguments := NULL;\n#---- one arg in Def ine_loop :=> fix a BUG in `for .. in .. do` loop!\n#---- nops if\n \+ if nops([Define_look]) = 1 then\n if op(0,Define_look) = proc name then\n Define_Arguments := op(Define_look);\n eli f op(0,Define_look) = `*` then\n a:=select(type,Define_look,' cliscalar');\n b:=remove(type,Define_look,'cliscalar'); ##De fine_look/a;\n if nops([b]) = 1 then\n Define_look := a*b;\n else\n Define_look := a*b[1],b[2..nops( [b])];\n fi;\n Define_Arguments := Define_look;\n \+ else\n Define_Arguments := Define_look; \n fi;\n \+ else ## of nops\n##\n## could be droped and changed to the single line\n## for Define_i in [Define_look] do\n##\n for Define_i i n Define_look do\n if (op(0,Define_i) = procname) then\n \+ Define_Arguments := Define_Arguments, op(Define_i)\n e lif (op(0,Define_i) = `*`) then\n a:=select(type,Define_i,' cliscalar');\n b:=remove(type,Define_i,'cliscalar'); ##Defi ne_i/a;\n if nops([b]) = 1 then\n Define_i := \+ a*b;\n else\n Define_i := a*b[1],b[2..nops([b] )];\n fi;\n Define_Arguments := Define_Arguments , Define_i\n else\n Define_Arguments := Define_Arg uments, Define_i \n fi;\n od;\n fi; ## of nops\n \+ else ## of has\n Define_Arguments := Define_look;\n fi; \n #----\n if _ORDERLESS then \n Define_Arguments := op(sort([Def ine_Arguments],'address')) \n fi \n fi;\n#####\n if _MLINEAR then \n Define_look := `define/multilinear`(op(subs(procname = _FUNCNAM E,[Define_Arguments]))); \n if not op(Define_look) = Define_Argumen ts then \n RETURN(eval(subs(_FUNCNAME = procname,Define_look))) \+ \n fi \n fi; \n#####\n if _LINEAR then \n Define_a := args[1]; \n if Define_a = 1 then \n elif type(Define_a,name) then \n \+ elif type(Define_a,'cliscalar') then \n RETURN(Define_a*procnam e(1,args[2 .. -1])) \n elif type(Define_a,`+`) then \n RETURN( map(procname,args)) \n elif type(Define_a,`*`) then \n Define_ cf := select(type,Define_a,'cliscalar'); \n if Define_cf = 1 then \+ \n RETURN(procname(Define_a)) \n fi; \n Define_term := se lect(proc (x) not type(x,'cliscalar') end,Define_a);\n RETURN(Def ine_cf*procname(Define_term,args[2 .. -1])) \n fi; \n fi; \n##### \n if _HASATABLE then \n Define_look := tablelook('procname'(Defin e_Arguments),'_TABLE'); \n if Define_look <> FAIL then \n RETU RN(eval(subs(`/FUNCNAME` = procname,Define_look))) \n else \n \+ 'procname'(Define_Arguments) \n fi \n else \n 'procname'(Define _Arguments) \n fi\n#####\nend:\n" }{TEXT -1 138 "`define/multilinear` was mainly altered to be able to handle the type 'cliscalar' of CLIFF ORD.\nEvery `constant` was changed to `cliscalar`" }{MPLTEXT 1 0 1 "\n " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1685 "## Patch for Maple V No 2.\n# #\n`define/multilinear`:=proc (OpName) \n local func, k, term, terms, cf, coefficient; \n options `Copyright (c) 1991 U.Waterloo. Patched \+ code 1999/2001 BF.`; \n##### NO Argument\n if nargs < 1 then \n ER ROR(`no element`)\n##### 1 Argument \n elif nargs = 1 then \n if typ e(args[1],'cliscalar') then \n RETURN(args[1]*('_FUNCNAME(Id)')) \n elif type(args[1],`+`) then \n RETURN(map(_FUNCNAME,args[1])) \n \+ elif type(args[1],`*`) and hastype(args[1],'cliscalar') then \n cf := select(type,args[1],'cliscalar'); \n term := remove(type,args[1 ],'cliscalar'); #args[1]/cf; \n RETURN(cf*_FUNCNAME(term))\n else \+ \n # no action \n fi\n##### more than two arguments \n elif 2 <= \+ nargs then\n if type(args[1],`+`) then \n RETURN(map(_FUNCNAME ,args[1 .. nargs])) \n else \n for k from 2 to nargs do\n \+ if type(args[k],`+`) then \n func := subs(\{_KK = k, ('F') = _FUNCNAME\},\n proc () F(args[2 .. _KK],args[1],ar gs[_KK+1 .. nargs]) end);\n RETURN(map(func,args[k],args[1 .. k-1],args[k+1 .. nargs]))\n fi \n od \n fi; \n term s := NULL; \n coefficient := 1; \n for k to nargs do \n if \+ type(args[k],'cliscalar') and args[k] <> 1 then \n coefficient \+ := coefficient*args[k]; \n term := 1;\n elif type(args[k ],`*`) and hastype(args[k],'cliscalar') then \n cf := select(ty pe,args[k],'cliscalar'); \n coefficient := coefficient*cf; \n \+ term := remove(type,args[k],'cliscalar'); #args[k]/cf;\n e lse \n term := args[k] \n fi; \n terms := terms, term \n od; \n RETURN(coefficient*_FUNCNAME(terms)) \n fi; \n RET URN('_FUNCNAME(args)') \nend:\n" }{TEXT -1 876 "init() -> clever ini t procedure which essentially patches Maple's `define` command.\n \+ Init() also defines the tensor product to be associative \+ (i.e. FLAT) and multilinear.\n\nMaple V reads the code of `define/mult ilinear` and `define/skeleton` only AFTER the first\ndefine(...) comma nd. That happens to be in the Bigebra[init]() procedure. The first cal l of \ndefine(...) loads the ORIGINAL Maple V definitions of `define/. ..` routines. To overwrite\nthis functions, the package needs to be l oaded twice. \nHowever, the with(...) command is clever and uses a rem ember table of loaded packages. \nTo force the Bigebra[...] functions \+ to be loaded once more, we 'unload(...)' the package\nbefore we reload it. In this second loading the `define/...' functions are now overwri tten by\nthe patched code of the package..... and good luck...... Jun e 6th of 2000 BF. ;-))))" }{MPLTEXT 1 0 2 "\n\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1003 "## No 999.\n##\nBigebra[init]:=proc()\n local out; \n global `&t`,_CLIENV;\n ## _CLIENV contains: _fakenow,_QDEF_PREFAC TOR,_SILENT\n option `Copyright (c) Ablamowicz, Fauser 1999/02. All r ights reserved.`; \n if not assigned(_CLIENV[_SILENT]) then _CLIENV[_ SILENT]:=`false`; fi;\n if not assigned(_CLIENV[_fakenow]) then\n \+ if _CLIENV[_SILENT] <> `true` then\n print(`\260\260Bi-Gebra Pack age Ver. 0.16 for CLIFFORD Ver. 5\260\260`);\n print(` Copyright Dec-16-99 / Dec-04-2001 Rafal Ablamowicz & Bertfried Fauser`);\n \+ print(` <====================================>`);\n print(` In itialize the Clifford Co-Product by:`);\n print(` 1) set dim_V and then set \"BI\" as dim_V x dim_V matrix`);\n print(` 2) r un make_BI_Id();`);\n print(` <================================= ===>`);\n fi;\n #\n define(`&t`,multilinear,flat,`&t`(0)=0); \+ \n unprotect(`define/multilinear`);\n out:=assigned(`define/mult ilinear`);\n _CLIENV[_fakenow]:=`true`:\n _CLIENV[_QDEF_PREFACTO R]:= -1: " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 1000 " if _CLIENV[_SILE NT] <> `true` then\n print(`Bigebra loads once more ... we need t o be tricky ...`):\n fi;\n readlib(unload); \n unload('Big ebra'):\n with(Bigebra):\n else\n unassign('`&t`');\n define (`&t`,multilinear,flat,`&t`(0)=0);\n if _CLIENV[_SILENT] <> `true` \+ then\n print(`Maple V now faked -- Go ahead!`);\n fi;\n if \+ type(Cliff5,table) then\n if _CLIENV[_SILENT] <> `true` then\n \+ print(`CLIFFORD ver. 5 is already loaded`);\n fi;\n else \n if _CLIENV[_SILENT] <> `true` then\n print(`Need to loa d CLIFFORD Ver. 5.....`);\n fi;\n with(Cliff5):\n fi;\n # if type(Cli5plus,table) then\n # if _CLIENV[_SILENT] <> `true` \+ then\n # print(`Cli5plus is already loaded`);\n # fi;\n # \+ else\n # if _CLIENV[_SILENT] <> `true` then\n # print(`Need \+ to load Cli5plus.....`);\n # fi;\n # with(Cli5plus):\n # fi; \n if _CLIENV[_SILENT] <> `true` then\n print(`... I am done . .. :-)) `);\n fi; \n fi;\nend:\n" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "savelib(Bigebra,`define/multilinear`,`define/skeleton`,`Bigebr a.m`);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 216 "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n%% \n%% Aditional internal information about the Maple.hdb database of HELPPAGES\n%%\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\nBigebra is linked to the Clifford helppages!\n" }}{PARA 0 "" 0 "" {TEXT -1 171 " Parents: Bigebra,help -- > Cliff5,intro\n Bigebr a, --> Bigebra,help\n" }}{PARA 0 "" 0 "" {TEXT -1 87 "ALIA SSES are shown after ==>\nNO indicates that there is no helppage for t his functions\n" }}{PARA 0 "" 0 "" {TEXT -1 814 "\nBigebra,bracket\nBi gebra,&cco ==> Bigebra,Clifford,coproduct\nBigebra,contract\nBigebra,c co_prod : NO\nBigebra,co_dec_monom2 : NO\nBigebra,co_map_monoms : NO\n Bigebra,co_map_monoms_t : NO\nBigebra,co_prod : NO\nBigebra,co_tensor \+ : NO\nBigebra,define\nBigebra,drop_t\nBigebra,eps : NO\nBigebra,EV ==> Bigebra,eval\nBigebra,gantipode ==> Bigebra,Grassmann,antipode\nBigeb ra,&gco ==> Bigebra,Grassmann,coproduct\nBigebra,gco_unit ==> Bigebra, Grassman,counit\nBigebra,gswitch\nBigebra,help ==> Bigebra,intro\nBige bra,hodge : NO\nBigebra,init\nBigebra,linop\nBigebra,linop2\nBigebra,& map\nBigebra,mapop\nBigebra,mapop2\nBigebra,meet ==> Bigebra,&v\nBigeb ra,pairing\nBigebra,peek\nBigebra,poke\nBigebra,remove_eq\nBigebra,swi tch\nBigebra,&t ==> Bigebra,tensor,Bigebra,tensorproduct\nBigebra,tcol lect\nBigebra,tsolve\nBigebra,&v ==> Bigebra,meet\n\nTYPES:\n" }} {PARA 0 "" 0 "" {TEXT -1 63 "Bigebra,type,tensorbasmonom : NO ==> Bige bra,type,tensorpolynom" }}{PARA 0 "" 0 "" {TEXT -1 59 "Bigebra,type,te nsormonom : NO ==> Bigebr,type,tensorpolynom" }}{PARA 0 "" 0 "" {TEXT -1 84 "Bigebra,type,tensorpolynom ==> Bigebra,type,tensorbasmonom, Big ebra,type,tensormonom" }}}}{MARK "0 7 0" 485 }{VIEWOPTS 1 1 0 1 1 1803 }