login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for CaleyDickson revision 8 of 18

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Editor: Bill Page
Time: 2011/04/18 16:34:27 GMT-7
Note: scalar examples

added:

http://en.wikipedia.org/wiki/Hypercomplex_number

changed:
-CaleyDickson(C:CommutativeRing,gen:Symbol,gamma:C):ComplexCategory(C)
CaleyDickson(C:CommutativeRing,gen:Symbol,gamma:C):ComplexCategory(C) with
    scalar:List % -> %

added:

    if C has scalar:List C -> C then
      scalar(x:List %):% ==
        h:Integer := divide(#x,2).quotient
        complex(scalar([retract(x.i)@C for i in 1..h]),scalar([retract(x.i)@C for i in h+1..#x]))
    else
      scalar(x:List %):% == complex(retract x.1,retract x.2)

changed:
-      return hconcat(outr, outi) 
      return outr + outi 

changed:
-gens1 := entries basis()$C
-matrix [[gens1.i * gens1.j for j in 1..#gens1] for i in 1..#gens1]
c:C := scalar [2,3]
Ce:ILIST(C,0) := construct entries basis()$C
matrix [[Ce.i * Ce.j for j in 0..#Ce-1] for i in 0..#Ce-1]

changed:
-gens2:=map(x+-> complex(x.1,x.2),
Cg:ILIST(Complex FRAC INT,0) := construct map(x+-> complex(x.1,x.2),

changed:
-matrix [[gens2.i * gens2.j for j in 1..#gens2] for i in 1..#gens2]
matrix [[Cg.i * Cg.j for j in 0..#Cg-1] for i in 0..#Cg-1]

changed:
-gens3 :=entries basis()$Q
-matrix [[gens3.i * gens3.j for j in 1..#gens3] for i in 1..#gens3]
q:Q := scalar [2,3,4,5]
Qe:ILIST(Q,0) := construct entries basis()$Q
matrix [[Qe.i * Qe.j for j in 0..#Qe-1] for i in 0..#Qe-1]

changed:
-gens4:=map(x+-> quatern(x.1,x.2,x.3,x.4),
Qg:ILIST(Quaternion FRAC INT,0) := construct map(x+-> quatern(x.1,x.2,x.3,x.4),

changed:
-matrix [[gens4.i * gens4.j for j in 1..#gens4] for i in 1..#gens4]
matrix [[Qg.i * Qg.j for j in 0..#Qg-1] for i in 0..#Qg-1]
-- non-commutative
test( Qe.1 * Qe.2 = - Qe.2 * Qe.1 )

added:

Ref: http://en.wikipedia.org/wiki/Octonion


changed:
-gens5 := entries basis()$O
-matrix [[gens5.i * gens5.j for j in 1..#gens5] for i in 1..#gens5]
o:O := scalar [2,3,4,5,6,7,8,9]
Oe:ILIST(O,0) := construct entries basis()$O
matrix [[Oe.i * Oe.j for j in 0..#Oe-1] for i in 0..#Oe-1]

changed:
-gens6:=map(x+-> octon(x.1,x.2,x.3,x.4,x.5,x.6,x.7,x.8),
Og:ILIST(Octonion FRAC INT,0):=map(x+-> octon(x.1,x.2,x.3,x.4,x.5,x.6,x.7,x.8),

changed:
-matrix [[gens6.i * gens6.j for j in 1..#gens6] for i in 1..#gens6]
matrix [[Og.i * Og.j for j in 0..#Og-1] for i in 0..#Og-1]
-- Non-commutative
test( Oe.2 * Oe.4 = - Oe.4 * Oe.2 )
-- Non-associative
test((Oe.2 * Oe.4) * Oe.7 = - Oe.2 * (Oe.4 * Oe.7))

added:

Ref: http://en.wikipedia.org/wiki/Sedenion


changed:
-gens7 := entries basis()$S
-matrix [[gens7.i * gens7.j for j in 1..#gens7] for i in 1..#gens7]
s:S := scalar [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
Se:ILIST(S,0) := construct entries basis()$S
matrix [[Se.i * Se.j for j in 0..#Se-1] for i in 0..#Se-1]
-- Non-commutative
test( Se.3 * Se.10 = - Se.10 * Se.3 )
-- Non-associative
test( (Se.3 * Se.6) * Se.11 =  -Se.3 * (Se.6 * Se.11) )
-- zero divisor
(Se.3 + Se.10) * (Se.6 - Se.15)

Ref:

http://en.wikipedia.org/wiki/Cayley%E2%80%93Dickson_construction

"The Cayley–Dickson construction, named after Arthur Cayley and Leonard Eugene Dickson, produces a sequence of algebras over the field of real numbers, each with twice the dimension of the previous one. The algebras produced by this process are known as Cayley–Dickson algebras; since they extend the complex numbers, ... "

complex numbers, quaternions, octonions, sedenions, ...

http://en.wikipedia.org/wiki/Hypercomplex_number

spad
)abbrev domain CALEY CaleyDickson
CaleyDickson(C:CommutativeRing,gen:Symbol,gamma:C):ComplexCategory(C) with
    scalar:List % -> %
  == add
    Rep == DirectProduct(2,C)
    rep(x:%):Rep == x pretend Rep
    per(x:Rep):% == x pretend %
pair(x:C,y:C):Rep == directProduct vector [x,y] complex(x:C,y:C):% == per pair(x,y) real(x:%):C == rep(x).1 imag(x:%):C == rep(x).2
0:% == complex(0,0) zero?(x:%):Boolean == zero? rep(x) 1:% == per pair(1,0) one?(x:%):Boolean == one? real x and zero? imag x
if C has conjugate:C->C then -- In general we need conjugate (x:% * y:%):% == --print(x::OutputForm * y::OutputForm) complex(real x * real y - gamma*conjugate imag y * imag x, imag y * real x + imag x * conjugate real y) conjugate(x:%):% == complex(conjugate(real x), -imag x) else -- If not complex then conjugate is identity (x:% * y:%):% == complex(real x * real y - gamma*imag y * imag x, imag y * real x + imag x * real y) conjugate(x:%):% == complex(real x, -imag x)
if C has Field then inv(x:%):% == per(inv(real(conjugate x * x))$C * rep conjugate x) (x:% / y:%):% == x * inv(y)
if C has rank:()->PositiveInteger then rank():PositiveInteger == 2*rank()$C else rank():PositiveInteger == 2
if C has basis:()->Vector C then basis():Vector % == concat([complex(i,0) for i in entries basis()$C], [complex(0,i) for i in entries basis()$C]) else basis():Vector % == [1,imaginary()]
if C has scalar:List C -> C then scalar(x:List %):% == h:Integer := divide(#x,2).quotient complex(scalar([retract(x.i)@C for i in 1..h]),scalar([retract(x.i)@C for i in h+1..#x])) else scalar(x:List %):% == complex(retract x.1,retract x.2)
coerce(x:%):OutputForm == outr:=real(x)::OutputForm imag x = 0 => return outr outi := hconcat(imag(x)::OutputForm, gen::OutputForm) if imag x = 1 then outi := gen::OutputForm if imag x = -1 then outi := -(gen::OutputForm) if C has imaginary:()->C then if imag x = -imaginary()$C then outi := -hconcat(imaginary()$C::OutputForm,gen::OutputForm) real x = 0 => return outi return outr + outi -- -- Many other funtctions are inherited from ComplexCategory -- -- To Do: -- 1) Check which other functions are still correct for higher-order algebras! -- -- re-defined these only to save function calls (x:% + y:%):% == per(rep x + rep y) (x:% = y:%):Boolean == rep x = rep y
spad
   Compiling FriCAS source code from file 
      /var/zope2/var/LatexWiki/8303746987006969608-25px001.spad using 
      old system compiler.
   CALEY abbreviates domain CaleyDickson 
------------------------------------------------------------------------
   initializing NRLIB CALEY for CaleyDickson 
   compiling into NRLIB CALEY 
****** Domain: C already in scope
   compiling local rep : $ -> DirectProduct(2,C)
      CALEY;rep is replaced by x 
Time: 0.35 SEC.
compiling local per : DirectProduct(2,C) -> $ CALEY;per is replaced by x Time: 0 SEC.
compiling local pair : (C,C) -> DirectProduct(2,C) Time: 0.01 SEC.
compiling exported complex : (C,C) -> $ Time: 0 SEC.
compiling exported real : $ -> C Time: 0 SEC.
compiling exported imag : $ -> C Time: 0 SEC.
compiling exported Zero : () -> $ Time: 0 SEC.
compiling exported zero? : $ -> Boolean Time: 0 SEC.
compiling exported One : () -> $ Time: 0 SEC.
compiling exported one? : $ -> Boolean Time: 0 SEC.
augmenting C: (SIGNATURE C conjugate (C C)) compiling exported * : ($,$) -> $ Time: 0.01 SEC.
compiling exported conjugate : $ -> $ Time: 0 SEC.
compiling exported * : ($,$) -> $ Time: 0.01 SEC.
compiling exported conjugate : $ -> $ Time: 0.01 SEC.
****** Domain: C already in scope augmenting C: (Field) compiling exported inv : $ -> $ Time: 0.03 SEC.
compiling exported / : ($,$) -> $ Time: 0 SEC.
augmenting C: (SIGNATURE C rank ((PositiveInteger))) compiling exported rank : () -> PositiveInteger Time: 0 SEC.
compiling exported rank : () -> PositiveInteger CALEY;rank;Pi;18 is replaced by 2 Time: 0 SEC.
augmenting C: (SIGNATURE C basis ((Vector C))) compiling exported basis : () -> Vector $ Time: 0.03 SEC.
compiling exported basis : () -> Vector $ Time: 0.01 SEC.
augmenting C: (SIGNATURE C scalar (C (List C))) compiling exported scalar : List $ -> $ Time: 0.05 SEC.
compiling exported scalar : List $ -> $ Time: 0 SEC.
compiling exported coerce : $ -> OutputForm augmenting C: (SIGNATURE C imaginary (C)) Time: 0.02 SEC.
compiling exported + : ($,$) -> $ Time: 0 SEC.
compiling exported = : ($,$) -> Boolean Time: 0.01 SEC.
****** Domain: C already in scope augmenting C: (EuclideanDomain) ****** Domain: C already in scope augmenting C: (PolynomialFactorizationExplicit) ****** Domain: C already in scope augmenting C: (RadicalCategory) ****** Domain: C already in scope augmenting C: (TranscendentalFunctionCategory) ****** Domain: C already in scope augmenting C: (RealNumberSystem) ****** Domain: C already in scope augmenting C: (TranscendentalFunctionCategory) ****** Domain: C already in scope augmenting C: (Comparable) ****** Domain: C already in scope augmenting C: (ConvertibleTo (InputForm)) ****** Domain: C already in scope augmenting C: (ConvertibleTo (Pattern (Float))) ****** Domain: C already in scope augmenting C: (ConvertibleTo (Pattern (Integer))) ****** Domain: C already in scope augmenting C: (DifferentialRing) ****** Domain: C already in scope augmenting C: (Eltable C C) ****** Domain: C already in scope augmenting C: (EuclideanDomain) ****** Domain: C already in scope augmenting C: (Evalable C) ****** Domain: C already in scope augmenting C: (Field) ****** Domain: C already in scope augmenting C: (Finite) ****** Domain: C already in scope augmenting C: (FiniteFieldCategory) ****** Domain: C already in scope augmenting C: (InnerEvalable (Symbol) C) ****** Domain: C already in scope augmenting C: (IntegerNumberSystem) ****** Domain: C already in scope augmenting C: (IntegralDomain) ****** Domain: C already in scope augmenting C: (LinearlyExplicitRingOver (Integer)) ****** Domain: C already in scope augmenting C: (PartialDifferentialRing (Symbol)) ****** Domain: C already in scope augmenting C: (PatternMatchable (Float)) ****** Domain: C already in scope augmenting C: (PatternMatchable (Integer)) ****** Domain: C already in scope augmenting C: (RealConstant) ****** Domain: C already in scope augmenting C: (RealNumberSystem) ****** Domain: C already in scope augmenting C: (RetractableTo (Fraction (Integer))) ****** Domain: C already in scope augmenting C: (RetractableTo (Integer)) ****** Domain: C already in scope augmenting C: (TranscendentalFunctionCategory) (time taken in buildFunctor: 1810)
;;; *** |CaleyDickson| REDEFINED
;;; *** |CaleyDickson| REDEFINED Time: 1.94 SEC.
Cumulative Statistics for Constructor CaleyDickson Time: 2.48 seconds
finalizing NRLIB CALEY Processing CaleyDickson for Browser database: --->-->CaleyDickson((scalar (% (List %)))): Not documented!!!! --->-->CaleyDickson(constructor): Not documented!!!! --->-->CaleyDickson(): Missing Description ; compiling file "/var/zope2/var/LatexWiki/CALEY.NRLIB/CALEY.lsp" (written 18 APR 2011 04:34:09 PM):
; /var/zope2/var/LatexWiki/CALEY.NRLIB/CALEY.fasl written ; compilation finished in 0:00:00.667 ------------------------------------------------------------------------ CaleyDickson is now explicitly exposed in frame initial CaleyDickson will be automatically loaded when needed from /var/zope2/var/LatexWiki/CALEY.NRLIB/CALEY
>> System error: The bounding indices 163 and 162 are bad for a sequence of length 162. See also: The ANSI Standard, Glossary entry for "bounding index designator" The ANSI Standard, writeup for Issue SUBSEQ-OUT-OF-BOUNDS:IS-AN-ERROR

Test

axiom
)set output tex on
 
axiom
)set output algebra off

Complex Numbers

axiom
C := CaleyDickson(FRAC INT,'i,1)

\label{eq1}\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Integer}\ }) , i , 1)(1)
Type: Type
axiom
rank()$C

\label{eq2}2(2)
Type: PositiveInteger?
axiom
c:C := scalar [2,3]

\label{eq3}2 +{3 i}(3)
Type: CaleyDickson?(Fraction(Integer),i,1)
axiom
Ce:ILIST(C,0) := construct entries basis()$C

\label{eq4}\left[ 1, \: i \right](4)
Type: IndexedList?(CaleyDickson?(Fraction(Integer),i,1),0)
axiom
matrix [[Ce.i * Ce.j for j in 0..#Ce-1] for i in 0..#Ce-1]

\label{eq5}\left[ 
\begin{array}{cc}
1 & i 
\
i & - 1 
(5)
Type: Matrix(CaleyDickson?(Fraction(Integer),i,1))
axiom
--
-- compare
--
Cg:ILIST(Complex FRAC INT,0) := construct map(x+-> complex(x.1,x.2),
           1$SquareMatrix(2,FRAC INT)::List List FRAC INT)

\label{eq6}\left[ 1, \: i \right](6)
Type: IndexedList?(Complex(Fraction(Integer)),0)
axiom
matrix [[Cg.i * Cg.j for j in 0..#Cg-1] for i in 0..#Cg-1]

\label{eq7}\left[ 
\begin{array}{cc}
1 & i 
\
i & - 1 
(7)
Type: Matrix(Complex(Fraction(Integer)))

Quaternions

axiom
Q := CaleyDickson(C,'j,1)

\label{eq8}\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Integer}\ }) , i , 1) , j , 1)(8)
Type: Type
axiom
rank()$Q

\label{eq9}4(9)
Type: PositiveInteger?
axiom
q:Q := scalar [2,3,4,5]

\label{eq10}2 +{3 i}+{{4 +{5 i}}j}(10)
Type: CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1)
axiom
Qe:ILIST(Q,0) := construct entries basis()$Q

\label{eq11}\left[ 1, \: i , \: j , \:{ij}\right](11)
Type: IndexedList?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),0)
axiom
matrix [[Qe.i * Qe.j for j in 0..#Qe-1] for i in 0..#Qe-1]

\label{eq12}\left[ 
\begin{array}{cccc}
1 & i & j &{ij}
\
i & - 1 &{ij}& - j 
\
j & -{ij}& - 1 & i 
\
{ij}& j & - i & - 1 
(12)
Type: Matrix(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1))
axiom
--
-- compare
--
Qg:ILIST(Quaternion FRAC INT,0) := construct map(x+-> quatern(x.1,x.2,x.3,x.4),
           1$SquareMatrix(4,FRAC INT)::List List FRAC INT)

\label{eq13}\left[ 1, \: i , \: j , \: k \right](13)
Type: IndexedList?(Quaternion(Fraction(Integer)),0)
axiom
matrix [[Qg.i * Qg.j for j in 0..#Qg-1] for i in 0..#Qg-1]

\label{eq14}\left[ 
\begin{array}{cccc}
1 & i & j & k 
\
i & - 1 & k & - j 
\
j & - k & - 1 & i 
\
k & j & - i & - 1 
(14)
Type: Matrix(Quaternion(Fraction(Integer)))
axiom
-- non-commutative
test( Qe.1 * Qe.2 = - Qe.2 * Qe.1 )

\label{eq15} \mbox{\rm true} (15)
Type: Boolean

Octonions

Ref: http://en.wikipedia.org/wiki/Octonion

axiom
O:=CaleyDickson(Q,'k,1)

\label{eq16}\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Integer}\ }) , i , 1) , j , 1) , k , 1)(16)
Type: Type
axiom
rank()$O

\label{eq17}8(17)
Type: PositiveInteger?
axiom
o:O := scalar [2,3,4,5,6,7,8,9]

\label{eq18}2 +{3 i}+{{4 +{5 i}}j}+{{6 +{7 i}+{{8 +{9 i}}j}}k}(18)
Type: CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1)
axiom
Oe:ILIST(O,0) := construct entries basis()$O

\label{eq19}\left[ 1, \: i , \: j , \:{ij}, \: k , \:{ik}, \:{jk}, \:{{ij}k}\right](19)
Type: IndexedList?(CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1),0)
axiom
matrix [[Oe.i * Oe.j for j in 0..#Oe-1] for i in 0..#Oe-1]

\label{eq20}\left[ 
\begin{array}{cccccccc}
1 & i & j &{ij}& k &{ik}&{jk}&{{ij}k}
\
i & - 1 &{ij}& - j &{ik}& - k &{-{ij}k}&{jk}
\
j & -{ij}& - 1 & i &{jk}&{{ij}k}& - k &{- ik}
\
{ij}& j & - i & - 1 &{{ij}k}& -{jk}&{ik}& - k 
\
k &{- ik}& -{jk}&{-{ij}k}& - 1 & i & j &{ij}
\
{ik}& k &{-{ij}k}&{jk}& - i & - 1 & -{ij}& j 
\
{jk}&{{ij}k}& k &{- ik}& - j &{ij}& - 1 & - i 
\
{{ij}k}& -{jk}&{ik}& k & -{ij}& - j & i & - 1 
(20)
Type: Matrix(CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1))
axiom
--
-- compare
--
Og:ILIST(Octonion FRAC INT,0):=map(x+-> octon(x.1,x.2,x.3,x.4,x.5,x.6,x.7,x.8),
           1$SquareMatrix(8,FRAC INT)::List List FRAC INT)

\label{eq21}\left[ 1, \: i , \: j , \: k , \: E , \: I , \: J , \: K \right](21)
Type: IndexedList?(Octonion(Fraction(Integer)),0)
axiom
matrix [[Og.i * Og.j for j in 0..#Og-1] for i in 0..#Og-1]

\label{eq22}\left[ 
\begin{array}{cccccccc}
1 & i & j & k & E & I & J & K 
\
i & - 1 & k & - j & I & - E & - K & J 
\
j & - k & - 1 & i & J & K & - E & - I 
\
k & j & - i & - 1 & K & - J & I & - E 
\
E & - I & - J & - K & - 1 & i & j & k 
\
I & E & - K & J & - i & - 1 & - k & j 
\
J & K & E & - I & - j & k & - 1 & - i 
\
K & - J & I & E & - k & - j & i & - 1 
(22)
Type: Matrix(Octonion(Fraction(Integer)))
axiom
-- Non-commutative
test( Oe.2 * Oe.4 = - Oe.4 * Oe.2 )

\label{eq23} \mbox{\rm true} (23)
Type: Boolean
axiom
-- Non-associative
test((Oe.2 * Oe.4) * Oe.7 = - Oe.2 * (Oe.4 * Oe.7))

\label{eq24} \mbox{\rm true} (24)
Type: Boolean

Sedenions

Ref: http://en.wikipedia.org/wiki/Sedenion

axiom
S:=CaleyDickson(O,'l,1)

\label{eq25}\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{CaleyDickson}\ } (\hbox{\axiomType{Fraction}\ } (\hbox{\axiomType{Integer}\ }) , i , 1) , j , 1) , k , 1) , l , 1)(25)
Type: Type
axiom
rank()$S

\label{eq26}16(26)
Type: PositiveInteger?
axiom
s:S := scalar [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]

\label{eq27}\begin{array}{@{}l}
\displaystyle
2 +{3 i}+{{4 +{5 i}}j}+{{6 +{7 i}+{{8 +{9 i}}j}}k}+ 
\
\
\displaystyle
{{{10}+{{11}i}+{{{12}+{{13}i}}j}+{{{14}+{{15}i}+{{{16}+{{17}i}}j}}k}}l}
(27)
Type: CaleyDickson?(CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1),l,1)
axiom
Se:ILIST(S,0) := construct entries basis()$S

\label{eq28}\left[ 1, \: i , \: j , \:{ij}, \: k , \:{ik}, \:{jk}, \:{{ij}k}, \: l , \:{il}, \:{jl}, \:{{ij}l}, \:{kl}, \:{{ik}l}, \:{{jk}l}, \:{{{ij}k}l}\right](28)
Type: IndexedList?(CaleyDickson?(CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1),l,1),0)
axiom
matrix [[Se.i * Se.j for j in 0..#Se-1] for i in 0..#Se-1]

\label{eq29}\left[ 
\begin{array}{cccccccccccccccc}
1 & i & j &{ij}& k &{ik}&{jk}&{{ij}k}& l &{il}&{jl}&{{ij}l}&{kl}&{{ik}l}&{{jk}l}&{{{ij}k}l}
\
i & - 1 &{ij}& - j &{ik}& - k &{-{ij}k}&{jk}&{il}& - l &{-{ij}l}&{jl}&{{- ik}l}&{kl}&{{{ij}k}l}&{-{jk}l}
\
j & -{ij}& - 1 & i &{jk}&{{ij}k}& - k &{- ik}&{jl}&{{ij}l}& - l &{- il}&{-{jk}l}&{{-{ij}k}l}&{kl}&{{ik}l}
\
{ij}& j & - i & - 1 &{{ij}k}& -{jk}&{ik}& - k &{{ij}l}&{- jl}&{il}& - l &{{-{ij}k}l}&{{jk}l}&{{- ik}l}&{kl}
\
k &{- ik}& -{jk}&{-{ij}k}& - 1 & i & j &{ij}&{kl}&{{ik}l}&{{jk}l}&{{{ij}k}l}& - l &{- il}&{- jl}&{-{ij}l}
\
{ik}& k &{-{ij}k}&{jk}& - i & - 1 & -{ij}& j &{{ik}l}& -{kl}&{{{ij}k}l}&{-{jk}l}&{il}& - l &{{ij}l}&{- jl}
\
{jk}&{{ij}k}& k &{- ik}& - j &{ij}& - 1 & - i &{{jk}l}&{{-{ij}k}l}& -{kl}&{{ik}l}&{jl}&{-{ij}l}& - l &{il}
\
{{ij}k}& -{jk}&{ik}& k & -{ij}& - j & i & - 1 &{{{ij}k}l}&{{jk}l}&{{- ik}l}& -{kl}&{{ij}l}&{jl}&{- il}& - l 
\
l &{- il}&{- jl}&{-{ij}l}& -{kl}&{{- ik}l}&{-{jk}l}&{{-{ij}k}l}& - 1 & i & j &{ij}& k &{ik}&{jk}&{{ij}k}
\
{il}& l &{-{ij}l}&{jl}&{{- ik}l}&{kl}&{{{ij}k}l}&{-{jk}l}& - i & - 1 & -{ij}& j &{- ik}& k &{{ij}k}& -{jk}
\
{jl}&{{ij}l}& l &{- il}&{-{jk}l}&{{-{ij}k}l}&{kl}&{{ik}l}& - j &{ij}& - 1 & - i & -{jk}&{-{ij}k}& k &{ik}
\
{{ij}l}&{- jl}&{il}& l &{{-{ij}k}l}&{{jk}l}&{{- ik}l}&{kl}& -{ij}& - j & i & - 1 &{-{ij}k}&{jk}&{- ik}& k 
\
{kl}&{{ik}l}&{{jk}l}&{{{ij}k}l}& l &{- il}&{- jl}&{-{ij}l}& - k &{ik}&{jk}&{{ij}k}& - 1 & - i & - j & -{ij}
\
{{ik}l}& -{kl}&{{{ij}k}l}&{-{jk}l}&{il}& l &{{ij}l}&{- jl}&{- ik}& - k &{{ij}k}& -{jk}& i & - 1 &{ij}& - j 
\
{{jk}l}&{{-{ij}k}l}& -{kl}&{{ik}l}&{jl}&{-{ij}l}& l &{il}& -{jk}&{-{ij}k}& - k &{ik}& j & -{ij}& - 1 & i 
\
{{{ij}k}l}&{{jk}l}&{{- ik}l}& -{kl}&{{ij}l}&{jl}&{- il}& l &{-{ij}k}&{jk}&{- ik}& - k &{ij}& j & - i & - 1 
(29)
Type: Matrix(CaleyDickson?(CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1),l,1))
axiom
-- Non-commutative
test( Se.3 * Se.10 = - Se.10 * Se.3 )

\label{eq30} \mbox{\rm true} (30)
Type: Boolean
axiom
-- Non-associative
test( (Se.3 * Se.6) * Se.11 =  -Se.3 * (Se.6 * Se.11) )

\label{eq31} \mbox{\rm true} (31)
Type: Boolean
axiom
-- zero divisor
(Se.3 + Se.10) * (Se.6 - Se.15)

\label{eq32}0(32)
Type: CaleyDickson?(CaleyDickson?(CaleyDickson?(CaleyDickson?(Fraction(Integer),i,1),j,1),k,1),l,1)