{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_03_M12. mws" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 24 "(Revised: May 27, 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 27, 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 884 "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 12 Package for Computations wit h Octonions (version 12)`); \nprint(`Last revised: May 27, 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_M12.mws++++++`);\nend proc:\n" }}{PARA 258 "" 0 " " {TEXT -1 451 "2. Defining octonion nonassociative multiplication 'o mul'. Octonions are defined as the paravectors in Cl(0,7) thus an oct onion basis is [Id, e1, e2, e3, e4, e5, e6, e7]. It is stored under a global variable '_octbasis'. Basis for pure octonions [e1, e2, e3, e4 , e5, e6, e7] is stored under a global variable 'pure_octbasis'. Any e lement that belongs to this vector space is now of type 'octonion'. Th e infix form of this multiplication is `&o`. " }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 273 "NOTE: Octonion mutlipl ication is defined as in P. Lounesto, \"CLICAL User Manual\", page 19. To display the default multiplication table, use procedure 'omultable ()' described below. To define your own octonion multiplication table, 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 898 "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](args[1],args[2],_octgen));\nreturn simplify(eval(Clifford:- vectorpart(x,0) + Clifford:-vectorpart(x,1)))\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 37 "3. Octonionic conjugation 'o_conjug'." }} {PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 43 "Typic al 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::octoni on) local p;\noptions `Copyright 1995-2009 by Rafal Ablamowicz, Tennes see Technological University`,remember;\nreturn eval(a1 - 2*Clifford:- vectorpart(a1,1))\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 27 "4. Oc tonionic norm 'onorm'." }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "" 0 "" {TEXT -1 37 "Typical use: onorm(Id - 2*e1 + 3*e3);" }}{PARA 258 "" 0 "" {TEXT -1 0 "" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 245 "onor m:=proc(a1::octonion) \noptions `Copyright 1995-2009 by Rafal Ablamowi cz, Tennessee Technological University`,remember;\nif args[1] = 0 then return 0 end if;\nreturn sqrt(Clifford:-scalarpart(args[1] &o Octonio n:-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 342 "oinv:=proc(a1::octonion) local N,ND; global _octbasis;\noptions ` Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technological Unive rsity`,remember;\nif args[1] <> 0 then \n N:=normal(args[1]); \n N D:=denom(N)*N;\n return expand(denom(N)*o_conjug(ND)/(onorm(ND))^2) \nelse error \"zero octonion %1 has no inverse\",args[1] \nend if;\nen d 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 203 "commutator:=proc(o1::octonion,o2::octonion)\noptions `Copyright 1 995-2009 by Rafal Ablamowicz, Tennessee Technological University`;\n r eturn eval(Octonion:-omul(o1,o2) - Octonion:-omul(o2,o1)); \nend 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::octonion) \nop tions `Copyright 1995-2009 by Rafal Ablamowicz, Tennessee Technologica l University`;\n return eval((o1 &o o2) &o o3 - o1 &o (o2 &o o3)); \ne nd proc: \n" }}{PARA 258 "" 0 "" {TEXT -1 98 "8. Associative 3-form Ph i(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 1995-2009 b y Rafal Ablamowicz, Tennessee Technological University`;\n expr:=eva l((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 Technological Univ ersity`;\n o11:=Clifford:-displayid(o1):\n return coeff(o11,Id) \nen d proc:\n" }}{PARA 258 "> " 0 "" {MPLTEXT 1 0 214 "purevectorpart:=pro c(o1::octonion) local o11;\noptions `Copyright 1995-2009 by Rafal Abla mowicz, Tennessee Technological University`;\n o11:=Clifford:-display id(o1):\n return Clifford:-vectorpart(o11,1); \nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 590 "10. Procedure 'omultable' displays current \+ octonion multiplication table in a form of a 7 by 7 matrix where in th e (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 automatic ally created using a set of default Fano triples. The default Fano tri ples are stored in a global variable '_default_Fano_triples'. User can enter his/her own set of Fano triples and use procedure 'def_omultabl e' 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-2009 by Rafa l Ablamowicz, Tennessee Technological University`;\nif not evalb(op(4, eval(Octonion:-omul))=NULL) then\n M:=linalg[matrix](7,7,(i,j)->Octo nion:-omul(_pureoctbasis[i],_pureoctbasis[j]));\n return evalm(M);\n else\n printf(\"Octonion multiplication table is not currently defin ed. Use 'def_omultable' to define a new table.\"); \n return \nend \+ if;\nend proc:\n" }}{PARA 258 "" 0 "" {TEXT -1 265 "11. Procedure 'def _omultable' allows the user to define the octonion multiplication tabl e 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 triple, wh ere i,j,k = 1,..., 7, then the octonion multiplication of [ei,ej,ek] i s defined as follows: \n\n(1) omul(ei, ej) = ek, omul(ej, ek) = ei, om ul(ek, ei) = ej,\n\n(2) omul(ej, ei) = -ek, omul(ek, ej) = -ei, omul(e i, ek) = -ej,\n\n(3) omul(ei, ei) = -Id, omul(ej, ej) = -Id, omul(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 any argume nt, it will define octonion multiplication using the default Fano trip les.\n\n(2) def_omultable(F);\n\nWhen used with one argument of type ' list(list)', that is, when F is a list consisting of seven three-eleme nt 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 "d ef_omultable:=proc() local L,x,i;\noptions `Copyright 1995-2009 by Raf al Ablamowicz, Tennessee Technological University`;\n################# #########################\nif nargs=0 then return def_omultable(_defau lt_Fano_triples,_default_squares) end if;\n########################### ###############\nif nops(args[1])<>7 or not type(args[1],Fano_triples) then \n error \"list entered does not contain seven Fano triples as required\" \nend if;\nsubsop(4=NULL,eval(Octonion:-omul)): #erase cur rent 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]:Octonion:-omul (L[2],L[1]):=-L[3]:\n Octonion:-omul(L[2],L[3]):=L[1]:Octonion:-omul (L[3],L[2]):=-L[1]:\n Octonion:-omul(L[3],L[1]):=L[2]:Octonion:-omul (L[1],L[3]):=-L[2]:\nend do:\nif nargs=1 then \n for i from 1 to 7 d o Octonion:-omul(e||i,e||i):=_default_squares[i] end do:\n return\ne nd if;\n##########################################\nif nargs=2 then\n \+ if nops(args[2])<>7 then \n error \"second input, when used, mu st be a list of 7 elements which are squares of the pure octonion basi s\"\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. Thi s 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,_pureoctbasis ,_octgen,`&o`,_default_Fano_triples,\n_default_squares,_default_Cliffo rd_product,\n`type/Fano_triples`,`type/octonion`,_O;\n################ #########################\nif assigned(Clifford)=false then \n #with (Clifford);\n error \"You must load package 'Clifford' before you ca n load package 'Octonion'\" \nend if;\n############################### ##########\n" }}{PARA 258 "" 0 "" {TEXT -1 439 "1. Type `Fano_triples` is a list F consisting of seven lists f_i, i=1..7, each of which must contain three positive integers from the set \{1,2,3,4,5,6,7\} in suc h a way that each integer is contained in exactly three lists. For exa mple, 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 four o f 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:\\Maple12/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*Bigebra.m6\"7(\"%3?\"#7\"#?\"#;\"#=\"#D\"'X&3$\"% _77&Q+Clifford.mF&7(F(F)F*\"#<\"#8\"#V\"&7$>\"%IC7&Q*Cliplus.mF&7(F(F) F*F+F4\"#\\\"'^NX\"$l$7&Q)Define.mF&7(F(F)F*F+\"#:F,\"'$p%>\"$*[7&Q> P.mF&7(F(F)F*F+\"#K\"#c\"'X\"Q$\"$!G7&Q&GfG.mF&7(F(F)F*F,\"\"'\"#C\"' \"G;(\"%187&Q+matcompL.mF&7(F(F)F*F+\"#5\"#L\"'e\"=(\"&=X(7&Q+matquatR .mF&FT\"'D1p\"&I?#7&Q+matrealR.mF&FT\"':+Z\"'Wj67&Q+Octonion.mF&7(\"%4 ?\"\"&\"#F\"#9\"\"\"\"\"$\"(_#y6\"$\\%7&Q,RJgrobner.mF&7(F(F)\"#@FioFc o\"#f\"'caj\"%j57&Q5SINGULARPLURALlink.mF&7(F(F)F*F*\"\"#FH\"'9;?\"$&H 7&Q+SchurFkt.mF&7(F(F)F*\"#>\"#N\"#d\"'E$\\%\"%DU7&Q2SymGroupAlgebra.m F&7(F^o\"\"%FfpF3\"#YF`o\"(v![6\"%687&Q>_AlternatingGroup_rem_table.mF &7(F^oF`p\"#EF*\"#U\"\")\"'74#*\"%Y77&Q:_FiniteGroups_rem_table.mF&7(F ^oF`pFeqF*Ffq\"\"*\"'')e%*\"%\\E7&Q6_Reynolds_rem_table.mF&Fdq\"'e@#* \"&GP#7&Q<_SymmetricGroup_rem_table.mF&Fdq\"'z&=*\"%LB7&QA_generateGin variants_rem_table.mF&F\\r\"'N&[*\"%*o'7&Q<_implicitbezierpolynomial.m F&7(F(F)FioFioF^qFco\"'e;J\"&S7\"7&Q/code_support.mF&7(F(F)F*F3\"#_\"# a\"'R/f\"$v%7&Q+matcompR.mF&FT\"'O&\\$\"&^M(7&Q+matquatL.mF&FT\"'JkG\" &9@#7&Q+matrealL.mF&FT\"&&\\A\"'9k67&Q%SP.mF&7(F(F)F*F*F4Fio\"'JQU\"%7 6" }}}{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_c onjugG%%oinvG%%omulG%*omultableG%&onormG%)oversionG%/purevectorpartG%) realpartG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "with(LibraryTo ols);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#72%1ActivationModuleG%1AddFro mDirectoryG%'AuthorG%'BrowseG%3BuildFromDirectoryG%/ConvertVersionG%'C reateG%'DeleteG%,FindLibraryG%,PrefixMatchG%)PriorityG%%SaveG%-ShowCon tentsG%*TimestampG%4UpdateFromDirectoryG%*WriteModeG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "ShowContents(libname[1]);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7;7&Q*Bigebra.m6\"7(\"%3?\"#7\"#?\"#;\"#=\"#D\"'X& 3$\"%_77&Q+Clifford.mF&7(F(F)F*\"#<\"#8\"#V\"&7$>\"%IC7&Q*Cliplus.mF&7 (F(F)F*F+F4\"#\\\"'^NX\"$l$7&Q)Define.mF&7(F(F)F*F+\"#:F,\"'$p%>\"$*[7 &Q>P.mF&7(F(F)F*F+\"#K\"#c\"'X\"Q$\"$!G7&Q&GfG.mF&7(F(F)F*F,\"\"'\"# C\"'\"G;(\"%187&Q+matcompL.mF&7(F(F)F*F+\"#5\"#L\"'e\"=(\"&=X(7&Q+matq uatR.mF&FT\"'D1p\"&I?#7&Q+matrealR.mF&FT\"':+Z\"'Wj67&Q+Octonion.mF&7( \"%4?\"\"&\"#F\"#9\"\"\"\"\"$\"(_#y6\"$\\%7&Q,RJgrobner.mF&7(F(F)\"#@F ioFco\"#f\"'caj\"%j57&Q5SINGULARPLURALlink.mF&7(F(F)F*F*\"\"#FH\"'9;? \"$&H7&Q+SchurFkt.mF&7(F(F)F*\"#>\"#N\"#d\"'E$\\%\"%DU7&Q2SymGroupAlge bra.mF&7(F^o\"\"%FfpF3\"#YF`o\"(v![6\"%687&Q>_AlternatingGroup_rem_tab le.mF&7(F^oF`p\"#EF*\"#U\"\")\"'74#*\"%Y77&Q:_FiniteGroups_rem_table.m F&7(F^oF`pFeqF*Ffq\"\"*\"'')e%*\"%\\E7&Q6_Reynolds_rem_table.mF&Fdq\"' e@#*\"&GP#7&Q<_SymmetricGroup_rem_table.mF&Fdq\"'z&=*\"%LB7&QA_generat eGinvariants_rem_table.mF&F\\r\"'N&[*\"%*o'7&Q<_implicitbezierpolynomi al.mF&7(F(F)FioFioF^qFco\"'e;J\"&S7\"7&Q/code_support.mF&7(F(F)F*F3\"# _\"#a\"'R/f\"$v%7&Q+matcompR.mF&FT\"'O&\\$\"&^M(7&Q+matquatL.mF&FT\"'J kG\"&9@#7&Q+matrealL.mF&FT\"&&\\A\"'9k67&Q%SP.mF&7(F(F)F*F*F4Fio\"'JQU \"%76" }}}{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_cupport~ver.~1.03~for~CLIFFORD~et~al.~for~Maple~1 2G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%apCopyright~(c)~2002-2009~by~Ra fal~Ablamowicz~and~Bertfried~Fauser.~All~rights~reserved.G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%@Last~revised:~December~20,~2008G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%!G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7-%/N amesInLibraryG%1change_helpfilesG%,change_nameG%*copy_fileG%)get_TEXTG %(get_dirG%1insert_helppagesG%)makeLISTG%+modifyLISTG%0replace_in_file G%&splitG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "NamesInLibrary (libname[1]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealL.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+Clifford.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q>_AlternatingGroup_rem_table.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#Q>P.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q<_implicitbezierpolynomial.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Bigebra.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matquatL.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q6_R eynolds_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q*Cliplus.m6 \"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+SchurFkt.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q:_FiniteGroups_rem_table.m6\"" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#QA_generateGinvariants_rem_table.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q%SP.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+mat compR.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q/code_support.m6\"" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matrealR.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+Octonion.m6\" " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matcompL.m6\"" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#Q&GfG.m6\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#Q+matqu atR.m6\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{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 "11 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }