{VERSION 6 0 "IBM INTEL NT" "6.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 1 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 1 } {PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }3 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Maple Output" -1 12 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 3 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Helvetica" 1 11 0 0 255 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "R3 \+ Font 2" -1 257 1 {CSTYLE "" -1 -1 "Courier" 1 10 255 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }{PSTYLE "Normal" -1 258 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 1 1 1 }1 1 0 0 0 0 1 0 1 0 2 2 0 1 }} {SECT 0 {EXCHG {PARA 258 "" 0 "" {TEXT -1 27 "This is octonion_M11_03. mws" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 24 "(Revised: May 26, 2009)\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 1091 "################################################################ #############\n# \+ #\n#DISCLAIMER: \+ #\n# \+ #\n#THERE IS NO WARRANTY FOR TH E CLIFFORD, BIGEBRA, Cliplus, Octonion, GTP #\n#PACKAGES TO THE EX TENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE #\n#STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE #\n# PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IM PLIED, #\n#INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ME RCHANTABILITY #\n#AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE R ISK AS TO THE QUALITY #\n#AND PERFORMANCE OF THE PROGRAM IS WITH YO U. SHOULD THE PROGRAM PROVE #\n#DEFECTIVE, YOU ASSUME THE COST O F ALL NECESSARY SERVICING, REPAIR OR #\n#CORRECTION. \+ #\n############### ##############################################################" }} {PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 239 "This Maple worksheet creates an octonion package called 'Octonion', versio n 6, and saves it in libname[1] `Octonion.m` file. It runs under Mapl e 6 through Maple 11 provided that Maple package CLIFFORD has been loa ded using with(Clifford)." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 28 "To load the package, execute" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 16 ">with(Octonion);" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 82 "Bel ow you will find a description of commands available in the 'Octonion' package." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 44 "Any comments and bug reports please send to:" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 16 "Rafal Ablam owicz" }}{PARA 258 "" 0 "" {TEXT -1 25 "Department of Mathematics" }} {PARA 258 "" 0 "" {TEXT -1 34 "Tennessee Technological University" }} {PARA 258 "" 0 "" {TEXT -1 24 "Cookeville, TN 38501 USA" }}{PARA 258 " " 0 "" {TEXT -1 30 "e-mail: rablamowicz@tntech.edu" }}{PARA 258 "" 0 " " {TEXT -1 24 "phone: USA(931) 372-3569" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 28 "Cookeville, TN, May 26, 2009" }} {PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }} {PARA 258 "> " 0 "" {MPLTEXT 1 0 28 "restart:unprotect(Octonion):" }} {PARA 258 "" 0 "" {TEXT -1 90 "1. Name 'oversion' stores information a bout the current version of the OCTONION package. " }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 26 "Typical use: oversio n(); " }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 886 "Octonion:=mo dule()\nexport Phi,associator,commutator,def_omultable,o_conjug,oinv,o mul,omultable,onorm,oversion,purevectorpart,realpart;\nlocal setup;\no ption package, load=setup:\n#############################\noversion:= \+ proc()\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Te chnological University`;\nprint(`+++++++++++++++++++++++++++++++++++++ ++++++`);\nprint(`'Octonion' - A Maple 11 Package for Computations wit h Octonions (version 11)`); \nprint(`Last revised: May 26, 2009`);\npr int(`Copyright 1995-2009, by Rafal Ablamowicz, Tennessee Technological University`);\nprint(`Department of Mathematics, Box 5054`);\nprint(` Tennessee Technological University, Cookeville, TN 38505`);\nprint(`ph one: USA (931) 372-3569, fax: USA (931) 372-6353`);\nprint(`e-mail: ra blamowicz@tntech.edu`);\nprint(`http://math.tntech.edu/rafal/`);\nprin t(`+++++++Octonion_03_M11.mws+++++++`);\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 451 "2. Defining octonion nonassociative multiplication 'omul'. Octonions are defined as the paravectors in Cl(0,7) thus an \+ octonion basis is [Id, e1, e2, e3, e4, e5, e6, e7]. It is stored unde r a global variable '_octbasis'. Basis for pure octonions [e1, e2, e3, e4, e5, e6, e7] is stored under a global variable 'pure_octbasis'. An y element that belongs to this vector space is now of type 'octonion'. The infix form of this multiplication is `&o`. " }}{PARA 258 "" 0 " " {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 273 "NOTE: Octonion mutli plication is defined as in P. Lounesto, \"CLICAL User Manual\", page 1 9. To display the default multiplication table, use procedure 'omultab le()' described below. To define your own octonion multiplication tabl e, use procedure 'def_omultable' (see below)." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 86 "Typical use: omul(Id + e1 + e2, e1 + e3); or (Id + 2*e1 + e2) &o (e2 + e3 + e1 + Id);" }} {PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 410 "omul:=proc(a1::octonion,a2::octonion) local expr,o1,o2,to1,to2,co effsa,coeffsb,i,j;\nglobal _pureoctbasis,_octbasis,_Soct,_octgen,_O,x; \noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technolo gical University`,remember;\nif a1=0 or a2=0 then return 0 end if;\nif member(a1,\{`Id`,1\}) then return a2 end if;\nif member(a2,\{`Id`,1\} ) then return a1 end if;\nif type(a1,\{`*`,`+`\}) or type(a2,\{`*`,`+` \}) then " }{TEXT -1 6 "\n " }{MPLTEXT 1 0 940 "o1:=collect(Cliffo rd:-displayid(a1),_octbasis);\n o2:=collect(Clifford:-displayid(a2),_ octbasis);\n coeffsa:=[coeffs(o1,_octbasis,'to1')];\n coeffsb:=[coef fs(o2,_octbasis,'to2')];\n to1:=[to1]:to2:=[to2]:\nexpr:=\nconvert([s eq(seq(coeffsa[i]*coeffsb[j]*'Octonion:-omul'(eval(to1[i]),eval(to2[j] )),\n i=1..nops(to1)) ,j=1..nops(to2))],`+`);\nif has(expr,'Id') then expr:=collect(simplify (expr),_octbasis) else\n expr:=collect(simplify( expr),_pureoctbasis) \nend if;\nreturn simplify(eval(expr))\nend if;\n #return simplify(eval(Clifford:-vectorpart(subs(_Soct,args[1] &cQ args [2] &cQ _octgen),0) + \n# Clifford:-vectorpart(sub s(_Soct,args[1] &cQ args[2] &cQ _octgen),1)));\nx:=subs(_Soct,Clifford :-cmul[_O](Clifford:-displayid(args[1]),Clifford:-displayid(args[2]),_ octgen));\nreturn simplify(eval(Clifford:-vectorpart(x,0) + Clifford:- vectorpart(x,1)))\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 37 "3. Oc tonionic conjugation 'o_conjug'." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }} {PARA 258 "" 0 "" {TEXT -1 43 "Typical use: o_conjug(Id + e1 + e2 + 4* e5);" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 191 "o_conjug:=proc(a1::octonion) local p;\noptions `Copy right 1995-2009 by Rafal Ablamowicz, Tennessee Technological Universit y`,remember;\nreturn eval(a1 - 2*Clifford:-vectorpart(a1,1))\nend proc :\n" }}{PARA 258 "" 0 "" {TEXT -1 27 "4. Octonionic norm 'onorm'." }} {PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 37 "Typic al use: onorm(Id - 2*e1 + 3*e3);" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }} {PARA 258 "> " 0 "" {MPLTEXT 1 0 245 "onorm:=proc(a1::octonion) \nopti ons `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technological \+ University`,remember;\nif args[1] = 0 then return 0 end if;\nreturn sq rt(Clifford:-scalarpart(args[1] &o Octonion:-o_conjug(args[1]))) \nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 29 "5. Octonionic inverse 'oinv '." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 34 "Typical use: oinv(Id - 2*e1 + e2);" }}{PARA 258 "" 0 "" {TEXT -1 0 " " }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 337 "oinv:=proc(a1::octonion) loc al N,ND; global _octbasis;\noptions `Copyright 1995-2009 by Rafal Abla mowicz, Tennessee Technological University`,remember;\nif args[1] <> 0 then \n N:=normal(args[1]); \n ND:=denom(N)*N;\n return expand( denom(N)*o_conjug(ND)/(onorm(ND))^2)\nelse error \"octonion %1 has no \+ inverse\",args[1] \nend if;\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 58 "6. A commutator [a,b] = ab - ba of two octonions a and b.\n" }} {PARA 258 "> " 0 "" {MPLTEXT 1 0 177 "commutator:=proc(o1::octonion,o2 ::octonion)\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tenness ee Technological University`;\n return eval(o1 &o o2 - o2 &o o1); \nen d proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 69 "7. An associatotor [a,b,c] = (ab)c - a(bc) of three octonions a,b,c.\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 208 "associator:=proc(o1::octonion,o2::octonion,o3::octon ion) \noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Tec hnological University`;\n return eval((o1 &o o2) &o o3 - o1 &o (o2 &o \+ o3)); \nend proc: \n" }}{PARA 258 "" 0 "" {TEXT -1 98 "8. Associative \+ 3-form Phi(a,b,c) = (1/2)*Re(a (b_bar c) - c (b_bar a)) where b_bar = \+ o_conjug(b) \n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 265 "Phi:=proc(o1:: octonion,o2::octonion,o3::octonion) local expr:\noptions `Copyright 19 95-2009 by Rafal Ablamowicz, Tennessee Technological University`;\n \+ expr:=eval((1/2)*(o1 &o (o_conjug(o2) &o o3) - o3 &o (o_conjug(o2) &o \+ o1))):\n return coeff(expr,Id) \nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 44 "9. Real and imaginary parts of an octonion:\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 193 "realpart:=proc(o1::octonion) local o11 ;\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technol ogical University`;\n o11:=Clifford:-displayid(o1):\n return coeff(o 11,Id) \nend proc:\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 214 "purevect orpart:=proc(o1::octonion) local o11;\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technological University`;\n o11:=Cliffo rd:-displayid(o1):\n return Clifford:-vectorpart(o11,1); \nend proc: \n" }}{PARA 258 "" 0 "" {TEXT -1 590 "10. Procedure 'omultable' displ ays current octonion multiplication table in a form of a 7 by 7 matrix where in the (i,j)-entry it displays the octonion product between the ith and the jth basis element in the pure octonion basis. This means \+ that the (i,j)-entry will equal omul(ei,ej), i,j = 1,...,7. The table \+ is automatically created using a set of default Fano triples. The defa ult Fano triples are stored in a global variable '_default_Fano_triple s'. User can enter his/her own set of Fano triples and use procedure ' def_omultable' to define his/her own octonion multiplication table.\n " }}{PARA 258 "" 0 "" {TEXT -1 13 ">omultable();" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 449 "omultable:=proc( ) local i,j,M; global omul,_pureoctbasis;\noptions `Copyright 1995-200 9 by Rafal Ablamowicz, Tennessee Technological University`;\nif not ev alb(op(4,eval(Octonion:-omul))=NULL) then\n M:=linalg[matrix](7,7,(i ,j)->Octonion:-omul(_pureoctbasis[i],_pureoctbasis[j]));\n return ev alm(M);\nelse\n printf(\"Octonion multiplication table is not curren tly defined. Use 'def_omultable' to define a new table.\"); \n retur n \nend if;\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 265 "11. Proce dure 'def_omultable' allows the user to define the octonion multiplica tion table in terms of seven Fano triples which define seven lines in \+ the Fano plane. The default Fano triples are: \n\n[1,3,7], [1,2,4], [1 ,5,6], [2,3,5], [2,6,7], [3,4,6], and [4,5,7]. \n" }}{PARA 258 "" 0 " " {TEXT -1 64 "They are stored under a global variable '_default_Fano_ triples'." }}{PARA 258 "" 0 "" {TEXT -1 355 "\nIf [i,j,k] is a Fano tr iple, where i,j,k = 1,..., 7, then the octonion multiplication of [ei, ej,ek] is defined as follows: \n\n(1) omul(ei, ej) = ek, omul(ej, ek) \+ = ei, omul(ek, ei) = ej,\n\n(2) omul(ej, ei) = -ek, omul(ek, ej) = -ei , omul(ei, ek) = -ej,\n\n(3) omul(ei, ei) = -Id, omul(ej, ej) = -Id, o mul(ek, ek) = -Id.\n\nThe procedure can be used as follows:" }}{PARA 258 "" 0 "" {TEXT -1 24 "\n(1) def_omultable(); " }}{PARA 258 "" 0 " " {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 363 "When used without an y argument, it will define octonion multiplication using the default F ano triples.\n\n(2) def_omultable(F);\n\nWhen used with one argument o f type 'list(list)', that is, when F is a list consisting of seven thr ee-element lists, each three-element list consisting of three integers between 1 and 7, then octonion multiplication is defined as above." } }{PARA 258 "" 0 "" {TEXT -1 1 "\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 1202 "def_omultable:=proc() local L,x,i;\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technological University`;\n########## ################################\nif nargs=0 then return def_omultable (_default_Fano_triples,_default_squares) end if;\n#################### ######################\nif nops(args[1])<>7 or not type(args[1],Fano_t riples) then \n error \"list entered does not contain seven Fano tri ples as required\" \nend if;\nsubsop(4=NULL,eval(Octonion:-omul)): #er ase current octonion multiplication table\nfor i from 1 to 7 do\n L: =[seq(e||x,x=args[1][i])]:\n Octonion:-omul(L[1],L[2]):=L[3]:Octonio n:-omul(L[2],L[1]):=-L[3]:\n Octonion:-omul(L[2],L[3]):=L[1]:Octonio n:-omul(L[3],L[2]):=-L[1]:\n Octonion:-omul(L[3],L[1]):=L[2]:Octonio n:-omul(L[1],L[3]):=-L[2]:\nend do:\nif nargs=1 then \n for i from 1 to 7 do Octonion:-omul(e||i,e||i):=_default_squares[i] end do:\n re turn\nend if;\n##########################################\nif nargs=2 \+ then\n if nops(args[2])<>7 then \n error \"second input, when u sed, must be a list of 7 elements which are squares of the pure octoni on basis\"\n end if;\nfor i from 1 to 7 do Octonion:-omul(e||i,e||i) :=args[2][i] end do:\nreturn\nend if;\nend proc:\n" }}{PARA 258 "" 0 " " {TEXT -1 103 "12. Initialization file for the 'Octonion' package. T his file is loaded automatically when the command" }}{PARA 258 "" 0 " " {TEXT -1 25 "with(Octonion); is given." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 444 "setup:=proc() \nlocal \+ x,y,i,j,E124,E235,E346,E457; \nglobal _Foct,_Soct,_octbasis,_pureoctba sis,_octgen,`&o`,_default_Fano_triples,\n_default_squares,_default_Cli fford_product,\n`type/Fano_triples`,`type/octonion`,_O;\n############# ############################\nif assigned(Clifford)=false then \n #w ith(Clifford);\n error \"You must load package 'Clifford' before you can load package 'Octonion'\" \nend if;\n############################ #############\n" }}{PARA 258 "" 0 "" {TEXT -1 439 "1. Type `Fano_tripl es` is a list F consisting of seven lists f_i, i=1..7, each of which m ust contain three positive integers from the set \{1,2,3,4,5,6,7\} in \+ such a way that each integer is contained in exactly three lists. For \+ example, the default Fano triples are:\n\n[[1,3,7],[1,2,4],[1,5,6],[2, 3,5],[2,6,7],[3,4,6],[4,5,7]]\n\nHowever, the following is not a list \+ of Fano triples:\n\n[[1,3,7],[1,2,4],[1,5,6],[2,3,5],[2,6,7],[3,4,6],[ 3,5,6]]\n" }}{PARA 258 "" 0 "" {TEXT -1 86 "because 3 is contained fou r of the seven sublists (6 is also contained in 4 sublists)." }}{PARA 258 "" 0 "" {TEXT -1 238 "\nValid Fano triples like [[1,3,7],[1,2,4],[ 1,5,6],[2,3,5],[2,6,7],[3,4,6],[4,5,7]] may be used to define seven li nes, each containing three points, such that each point is on three li nes and each line is on three points in the Fano plane." }}{PARA 258 " " 0 "" {TEXT -1 236 "\nUser may define a different set of Fano triples in order to define different ocotonionic multiplication table. For ex ample, the following is another set of valid Fano triples:\n\n[[1,2,5] ,[1,3,4],[1,7,6],[2,3,7],[3,6,5],[2,4,6],[4,5,7]]\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 606 "`type/Fano_triples`:=proc(F::list(list)) local \+ f,s,S,i,k:\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennesse e Technological University`;\nif nops(F)<>7 then return false end if; \nfor f in F do \n if not type(f,list(posint)) or nops(f)<>3 then r eturn false end if;\nend do:\nS:=\{1,2,3,4,5,6,7\}:\ns:=`union`(seq(co nvert(F[i],set),i=1..7));\ns:=s minus (s intersect S):\nif nops(s)<>0 \+ then return false end if;\nfor i in S do\n k:=0:\n for f in F do if member(i,f) then k:=k+1 fi end do:\n if k<>3 then return false \+ end if;\nend do:\nreturn true \nend proc:\n\n##################### ####################" }}{PARA 258 "" 0 "" {TEXT -1 19 "2. Type 'octoni on'\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 443 "`type/octonion`:=proc(a 1::algebraic) local S, setoctbasis;\noptions `Copyright 1995-2009 by R afal Ablamowicz, Tennessee Technological University`;\nif type(eval(a1 ),numeric) then return true end if;\nif not type(eval(a1),\{clibasmon, climon,clipolynom\}) then return false end if;\nS:=Clifford:-cliterms( eval(a1));\nsetoctbasis:=\{Id,e||(1..7)\}:\nreturn evalb(S minus (S in tersect setoctbasis) = \{\});\nend proc:\n############################ ##############" }}{PARA 258 "" 0 "" {TEXT -1 40 "3. Ampersand form of \+ Clifford product:\n " }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 416 "`&o`:=pr oc() eval(omul(args)) end proc:\n##################################### #####\nunprotect(_octbasis):\n_octbasis:=[Id,e||(1..7)]; #standard o ctonion basis as Maple global variable\n_pureoctbasis:=[e||(1..7)]; # pure octonion basis as Maple global variable\n_default_Fano_triples:=[ [1,3,7],[1,2,4],[1,5,6],[2,3,5],[2,6,7],[3,4,6],[4,5,7]];\n_default_sq uares:=[-Id$7]:\n_default_Clifford_product:='Clifford:-cmulNUM':\n" }} {PARA 258 "" 0 "" {TEXT -1 123 "4. Defining octonion mutliplication wh ich can be changed here, if necessary, or later in a worksheet using d ef_omultable. \n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 232 "unprotect(_F oct);\nunprotect(_Soct);\n_Foct:=proc(a1::posint,a2::posint) if args[1 ]=args[2] then return -1 else return 0 fi end proc:\n_Soct:=\{seq(seq( _O[i,j]=_Foct(i,j),i=1..7),j=1..7)\}: #regular octonion multiplication as in Cl(0,7)\n" }}{PARA 258 "" 0 "" {TEXT -1 60 "E124:=subs(_Soct,e1 &cQ e2 &cQ e4); #defined and computed\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 26 "E124:=e1we2we4; #assigned\n" }}{PARA 258 "" 0 "" {TEXT -1 60 "E235:=subs(_Soct,e2 &cQ e3 &cQ e5); #defined and comput ed\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 27 "E235:=e2we3we5; #assigne d\n" }}{PARA 258 "" 0 "" {TEXT -1 60 "E346:=subs(_Soct,e3 &cQ e4 &cQ e 6); #defined and computed\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 27 " E346:=e3we4we6; #assigned\n" }}{PARA 258 "" 0 "" {TEXT -1 36 "E457:=s ubs(_Soct,e4 &cQ e5 &cQ e7);\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 27 "E457:=e4we5we7; #assigned\n" }}{PARA 258 "" 0 "" {TEXT -1 118 "_octg en:=subs(_Soct, subs(_Soct, (Id - E124) &cQ (Id - E235)) &cQ subs(_Soc t, (Id - E346) &cQ (Id - E457))); #defined\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 221 "_octgen:=e2we3we4we7-e1we3we7-e4we5we7-e1we2we5we7-e 2we4we5we6-e1we5we6-e3we4we6+\n e1we2we3we6-e2we6we7+e1we 4we6we7-e3we5we6we7-e1we2we3we4we5we6we7-e2we3we5-\n e1we 3we4we5+Id-e1we2we4; #assigned\n" }}{PARA 258 "" 0 "" {TEXT -1 102 "As signing a multiplication table for the octonion basis. This table has been computed using the above" }}{PARA 258 "" 0 "" {TEXT -1 53 "defin itions of _Foct, _Soct, E124, E235, E346, E457.\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 54 "def_omultable(_default_Fano_triples,_default_squar es);" }}{PARA 258 "" 0 "" {TEXT -1 33 "\n(5) Protecting procedure name s.\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 41 "protect(Octonion);\nend p roc:\n\nend module:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "libn ame[1];" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q7C:\\Maple11/Cliffordlib6 \"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "savelib(Octonion):" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "with(LibraryTools);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#72%1ActivationModuleG%1AddFromDirector yG%'AuthorG%'BrowseG%3BuildFromDirectoryG%/ConvertVersionG%'CreateG%'D eleteG%,FindLibraryG%,PrefixMatchG%)PriorityG%%SaveG%-ShowContentsG%*T imestampG%4UpdateFromDirectoryG%*WriteModeG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "ShowContents(libname[1]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7=7&Q'asvd.m6\"7(\"%3?\"\")\"#7\"\"$\"#L\"\"%\"'!))[\" \"$)H7&Q*Bigebra.mF&7(\"%2?F*\"#?F)\"#\"#\\ \"'T.d\"$x$7&Q)Define.mF&7(F3F*F4F)\"#9\"#d\"'Pv?\"$$[7&Q>P.mF&7(F3F *F4F)\"#`\"#@\"'VlU\"$\"G7&Q+matcompR.mF&7(F3F*F4F)\"#8FK\"'LpX\"&^M(7 &Q+matrealR.mF&FX\"'6)*f\"'Wj67&Q5SINGULARPLURALlink.mF&7(F(F<\"#:\"#; \"#S\"#C\"'JV?\"$-$7&Q%SP.mF&7(F(\"\"*F-\"#A\"#TFS\"'%QI&\"%q77&Q+Schu rFkt.mF&7(F(F;FDF4\"#_\"#J\"'zfc\"%iV7&Q&TNB.mF&7(F(F+\"#GF5\"#HF]o\"' ;PX\"$,)7&Q>_AlternatingGroup_rem_table.mF&7(F(F*FfoF4\"#cF;\"'&yi*\"% @77&Q:_FiniteGroups_rem_table.mF&F[q\"(YD4\"\"%/E7&Q6_Reynolds_rem_tab le.mF&F[q\"'1S'*\"'S&G\"7&Q<_SymmetricGroup_rem_table.mF&7(F(F*FfoF4F \\qF<\"'_/'*\"%LB7&QA_generateGinvariants_rem_table.mF&F[q\"(]^4\"\"& \")>$7&Q<_implicitbezierpolynomial.mF&7(F(F;Fgo\"\"!\"#I\"#V\"'eIT\"&e 7\"7&Q/code_support.mF&7(F(F;FSFcr\"#eFK\"'cxr\"$*[7&Q&GfG.mF&7(F(F;Fg o\"#6\"#fF>\"'n;()\"%[87&Q+matcompL.mF&FX\"'@L()\"&=X(7&Q+matquatL.mF& FX\"'r&)Q\"&9@#7&Q+matquatR.mF&FX\"'f'[)\"&I?#7&Q+matrealL.mF&FX\"&Y&= \"'9k67&Q+Octonion.mF&7(\"%4?F<\"#EFgoF-F4\"($Qj8\"$]%7&Q,RJgrobner.mF &7(F(F;FgoFcrFdr\"#Q\"',Sz\"%\"4\"7&Q2SymGroupAlgebra.mF&7(Fht\"\"\"F- FfoFgo\"#Y\"(x]L\"\"%b7" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 " " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "restart:with(Octonion); " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7.%$PhiG%+associatorG%+commutatorG %.def_omultableG%)o_conjugG%%oinvG%%omulG%*omultableG%&onormG%)oversio nG%/purevectorpartG%)realpartG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "with(LibraryTools);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#72%1Act ivationModuleG%1AddFromDirectoryG%'AuthorG%'BrowseG%3BuildFromDirector yG%/ConvertVersionG%'CreateG%'DeleteG%,FindLibraryG%,PrefixMatchG%)Pri orityG%%SaveG%-ShowContentsG%*TimestampG%4UpdateFromDirectoryG%*WriteM odeG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "ShowContents(libnam e[1]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7=7&Q'asvd.m6\"7(\"%3?\"\") \"#7\"\"$\"#L\"\"%\"'!))[\"\"$)H7&Q*Bigebra.mF&7(\"%2?F*\"#?F)\"#\"#\\\"'T.d\"$x$7&Q)Define.mF&7(F3F*F4F)\"#9\"#d \"'Pv?\"$$[7&Q>P.mF&7(F3F*F4F)\"#`\"#@\"'VlU\"$\"G7&Q+matcompR.mF&7( F3F*F4F)\"#8FK\"'LpX\"&^M(7&Q+matrealR.mF&FX\"'6)*f\"'Wj67&Q5SINGULARP LURALlink.mF&7(F(F<\"#:\"#;\"#S\"#C\"'JV?\"$-$7&Q%SP.mF&7(F(\"\"*F-\"# A\"#TFS\"'%QI&\"%q77&Q+SchurFkt.mF&7(F(F;FDF4\"#_\"#J\"'zfc\"%iV7&Q&TN B.mF&7(F(F+\"#GF5\"#HF]o\"';PX\"$,)7&Q>_AlternatingGroup_rem_table.mF& 7(F(F*FfoF4\"#cF;\"'&yi*\"%@77&Q:_FiniteGroups_rem_table.mF&F[q\"(YD4 \"\"%/E7&Q6_Reynolds_rem_table.mF&F[q\"'1S'*\"'S&G\"7&Q<_SymmetricGrou p_rem_table.mF&7(F(F*FfoF4F\\qF<\"'_/'*\"%LB7&QA_generateGinvariants_r em_table.mF&F[q\"(]^4\"\"&\")>$7&Q<_implicitbezierpolynomial.mF&7(F(F; Fgo\"\"!\"#I\"#V\"'eIT\"&e7\"7&Q/code_support.mF&7(F(F;FSFcr\"#eFK\"'c xr\"$*[7&Q&GfG.mF&7(F(F;Fgo\"#6\"#fF>\"'n;()\"%[87&Q+matcompL.mF&FX\"' @L()\"&=X(7&Q+matquatL.mF&FX\"'r&)Q\"&9@#7&Q+matquatR.mF&FX\"'f'[)\"&I ?#7&Q+matrealL.mF&FX\"&Y&=\"'9k67&Q+Octonion.mF&7(\"%4?F<\"#EFgoF-F4\" ($Qj8\"$]%7&Q,RJgrobner.mF&7(F(F;FgoFcrFdr\"#Q\"',Sz\"%\"4\"7&Q2SymGro upAlgebra.mF&7(Fht\"\"\"F-FfoFgo\"#Y\"(x]L\"\"%b7" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 19 "with(code_support);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%inModule~code_c upport~ver.~1.03~for~CLIFFORD~et~al.~for~Maple~11G" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#%apCopyright~(c)~2002-2008~by~Rafal~Ablamowicz~and~Be rtfried~Fauser.~All~rights~reserved.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%=Last~revised:~March~10,~2007G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# %!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-%/NamesInLibraryG%1change_hel pfilesG%,change_nameG%*copy_fileG%)get_TEXTG%(get_dirG%1insert_helppag esG%)makeLISTG%+modifyLISTG%0replace_in_fileG%&splitG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "NamesInLibrary(libname[1]);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q>_AlternatingGroup_rem_table.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Clifford.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q'as vd.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_SymmetricGroup_rem_table .m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q5SINGULARPLURALlink.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q)Define.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q6_Reynolds_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Bi gebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_implicitbezierpolynom ial.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>P.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q&TNB.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+ma tcompR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q%SP.m6\"" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#QA_generateGinvariants_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q:_FiniteGroups_rem_table.m6\"" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#Q+SchurFkt.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Cliplus.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q/code_support.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q2SymGroupAlgebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q,RJgrobner.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+m atquatR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q&GfG.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Octonion.m6\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 3 "End" }}}}{MARK "0 38 2" 751 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }