# OctonionCategory R¶

oct.spad line 1 [edit on github]

OctonionCategory gives the categorial frame for the octonions, and eight-dimensional non-associative algebra, doubling the quaternions in the same way as doubling the Complex numbers to get the quaternions.

- 0: %
from AbelianMonoid

- 1: % if R has CharacteristicZero or R has CharacteristicNonZero
from MagmaWithUnit

- *: (%, %) -> %
from Magma

- *: (%, R) -> %
from RightModule R

- *: (Integer, %) -> %
from AbelianGroup

- *: (NonNegativeInteger, %) -> %
from AbelianMonoid

- *: (PositiveInteger, %) -> %
from AbelianSemiGroup

- *: (R, %) -> %
from LeftModule R

- +: (%, %) -> %
from AbelianSemiGroup

- -: % -> %
from AbelianGroup

- -: (%, %) -> %
from AbelianGroup

- <=: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- <: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- >=: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- >: (%, %) -> Boolean if R has OrderedSet
from PartialOrder

- ^: (%, NonNegativeInteger) -> % if R has CharacteristicZero or R has CharacteristicNonZero
from MagmaWithUnit

- ^: (%, PositiveInteger) -> %
from Magma

- abs: % -> R if R has RealNumberSystem
`abs(o)`

computes the absolute value of an octonion, equal to the square root of the norm.

- alternative?: () -> Boolean

- annihilate?: (%, %) -> Boolean if R has CharacteristicZero or R has CharacteristicNonZero
from Rng

- antiAssociative?: () -> Boolean

- antiCommutative?: () -> Boolean

- antiCommutator: (%, %) -> %

- apply: (Matrix R, %) -> %
from FramedNonAssociativeAlgebra R

- associative?: () -> Boolean

- associator: (%, %, %) -> %
from NonAssociativeRng

- associatorDependence: () -> List Vector R if R has IntegralDomain

- basis: () -> Vector %
from FramedModule R

- characteristic: () -> NonNegativeInteger if R has CharacteristicZero or R has CharacteristicNonZero
from NonAssociativeRing

- charthRoot: % -> Union(%, failed) if R has CharacteristicNonZero

- coerce: % -> OutputForm
from CoercibleTo OutputForm

- coerce: Fraction Integer -> % if R has RetractableTo Fraction Integer
from CoercibleFrom Fraction Integer

- coerce: Integer -> % if R has CharacteristicNonZero or R has RetractableTo Integer or R has CharacteristicZero
from NonAssociativeRing

- coerce: R -> %
from CoercibleFrom R

- commutative?: () -> Boolean

- commutator: (%, %) -> %
from NonAssociativeRng

- conditionsForIdempotents: () -> List Polynomial R
from FramedNonAssociativeAlgebra R

- conditionsForIdempotents: Vector % -> List Polynomial R

- conjugate: % -> %
`conjugate(o)`

negates the imaginary parts`i`

,`j`

,`k`

,`E`

,`I`

,`J`

,`K`

of octonian`o`

.

- convert: % -> InputForm if R has ConvertibleTo InputForm
from ConvertibleTo InputForm

- convert: % -> Vector R
from FramedModule R

- convert: Vector R -> %
from FramedModule R

- coordinates: % -> Vector R
from FramedModule R

- coordinates: (%, Vector %) -> Vector R
- coordinates: (Vector %, Vector %) -> Matrix R
- coordinates: Vector % -> Matrix R
from FramedModule R

- elt: (%, Integer) -> R
from FramedNonAssociativeAlgebra R

- elt: (%, R) -> % if R has Eltable(R, R)
from Eltable(R, %)

- eval: (%, Equation R) -> % if R has Evalable R
from Evalable R

- eval: (%, List Equation R) -> % if R has Evalable R
from Evalable R

- eval: (%, List R, List R) -> % if R has Evalable R
from InnerEvalable(R, R)

- eval: (%, List Symbol, List R) -> % if R has InnerEvalable(Symbol, R)
from InnerEvalable(Symbol, R)

- eval: (%, R, R) -> % if R has Evalable R
from InnerEvalable(R, R)

- eval: (%, Symbol, R) -> % if R has InnerEvalable(Symbol, R)
from InnerEvalable(Symbol, R)

- hash: % -> SingleInteger if R has Hashable
from Hashable

- hashUpdate!: (HashState, %) -> HashState if R has Hashable
from Hashable

- imagE: % -> R
`imagE(o)`

extracts the imaginary`E`

part of octonion`o`

.

- imagi: % -> R
`imagi(o)`

extracts the`i`

part of octonion`o`

.

- imagI: % -> R
`imagI(o)`

extracts the imaginary`I`

part of octonion`o`

.

- imagj: % -> R
`imagj(o)`

extracts the`j`

part of octonion`o`

.

- imagJ: % -> R
`imagJ(o)`

extracts the imaginary`J`

part of octonion`o`

.

- imagK: % -> R
`imagK(o)`

extracts the imaginary`K`

part of octonion`o`

.

- imagk: % -> R
`imagk(o)`

extracts the`k`

part of octonion`o`

.

- index: PositiveInteger -> % if R has Finite
from Finite

- inv: % -> % if R has Field
`inv(o)`

returns the inverse of`o`

if it exists.

- jacobiIdentity?: () -> Boolean

- jordanAdmissible?: () -> Boolean

- jordanAlgebra?: () -> Boolean

- latex: % -> String
from SetCategory

- leftAlternative?: () -> Boolean

- leftDiscriminant: () -> R
from FramedNonAssociativeAlgebra R

- leftDiscriminant: Vector % -> R

- leftMinimalPolynomial: % -> SparseUnivariatePolynomial R if R has IntegralDomain

- leftNorm: % -> R

- leftPower: (%, NonNegativeInteger) -> % if R has CharacteristicZero or R has CharacteristicNonZero
from MagmaWithUnit

- leftPower: (%, PositiveInteger) -> %
from Magma

- leftRankPolynomial: () -> SparseUnivariatePolynomial Polynomial R if R has Field
from FramedNonAssociativeAlgebra R

- leftRecip: % -> Union(%, failed) if R has IntegralDomain or R has CharacteristicZero or R has CharacteristicNonZero

- leftRegularRepresentation: % -> Matrix R
from FramedNonAssociativeAlgebra R

- leftRegularRepresentation: (%, Vector %) -> Matrix R

- leftTrace: % -> R

- leftTraceMatrix: () -> Matrix R
from FramedNonAssociativeAlgebra R

- leftTraceMatrix: Vector % -> Matrix R

- leftUnit: () -> Union(%, failed) if R has IntegralDomain

- leftUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain

- lieAdmissible?: () -> Boolean

- lieAlgebra?: () -> Boolean

- lookup: % -> PositiveInteger if R has Finite
from Finite

- map: (R -> R, %) -> %
from FullyEvalableOver R

- max: (%, %) -> % if R has OrderedSet
from OrderedSet

- min: (%, %) -> % if R has OrderedSet
from OrderedSet

- norm: % -> R
`norm(o)`

returns the norm of an octonion, equal to the sum of the squares of its coefficients.

- octon: (R, R, R, R, R, R, R, R) -> %
`octon(re, ri, rj, rk, rE, rI, rJ, rK)`

constructs an octonion from scalars.

- one?: % -> Boolean if R has CharacteristicZero or R has CharacteristicNonZero
from MagmaWithUnit

- opposite?: (%, %) -> Boolean
from AbelianMonoid

- plenaryPower: (%, PositiveInteger) -> %
from NonAssociativeAlgebra R

- powerAssociative?: () -> Boolean

- rank: () -> PositiveInteger
from FramedModule R

- rational?: % -> Boolean if R has IntegerNumberSystem
`rational?(o)`

tests if`o`

is rational, i.e. that all seven imaginary parts are 0.

- rational: % -> Fraction Integer if R has IntegerNumberSystem
`rational(o)`

returns the real part if all seven imaginary parts are 0. Error: if`o`

is not rational.

- rationalIfCan: % -> Union(Fraction Integer, failed) if R has IntegerNumberSystem
`rationalIfCan(o)`

returns the real part if all seven imaginary parts are 0, and “failed” otherwise.

- real: % -> R
`real(o)`

extracts real part of octonion`o`

.

- recip: % -> Union(%, failed) if R has IntegralDomain or R has CharacteristicZero or R has CharacteristicNonZero

- represents: (Vector R, Vector %) -> %
- represents: Vector R -> %
from FramedModule R

- retract: % -> Fraction Integer if R has RetractableTo Fraction Integer
from RetractableTo Fraction Integer

- retract: % -> Integer if R has RetractableTo Integer
from RetractableTo Integer

- retract: % -> R
from RetractableTo R

- retractIfCan: % -> Union(Fraction Integer, failed) if R has RetractableTo Fraction Integer
from RetractableTo Fraction Integer

- retractIfCan: % -> Union(Integer, failed) if R has RetractableTo Integer
from RetractableTo Integer

- retractIfCan: % -> Union(R, failed)
from RetractableTo R

- rightAlternative?: () -> Boolean

- rightDiscriminant: () -> R
from FramedNonAssociativeAlgebra R

- rightDiscriminant: Vector % -> R

- rightMinimalPolynomial: % -> SparseUnivariatePolynomial R if R has IntegralDomain

- rightNorm: % -> R

- rightPower: (%, NonNegativeInteger) -> % if R has CharacteristicZero or R has CharacteristicNonZero
from MagmaWithUnit

- rightPower: (%, PositiveInteger) -> %
from Magma

- rightRankPolynomial: () -> SparseUnivariatePolynomial Polynomial R if R has Field
from FramedNonAssociativeAlgebra R

- rightRecip: % -> Union(%, failed) if R has IntegralDomain or R has CharacteristicZero or R has CharacteristicNonZero

- rightRegularRepresentation: % -> Matrix R
from FramedNonAssociativeAlgebra R

- rightRegularRepresentation: (%, Vector %) -> Matrix R

- rightTrace: % -> R

- rightTraceMatrix: () -> Matrix R
from FramedNonAssociativeAlgebra R

- rightTraceMatrix: Vector % -> Matrix R

- rightUnit: () -> Union(%, failed) if R has IntegralDomain

- rightUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain

- sample: %
from AbelianMonoid

- size: () -> NonNegativeInteger if R has Finite
from Finite

- smaller?: (%, %) -> Boolean if R has Finite or R has OrderedSet
from Comparable

- structuralConstants: () -> Vector Matrix R
from FramedNonAssociativeAlgebra R

- structuralConstants: Vector % -> Vector Matrix R

- subtractIfCan: (%, %) -> Union(%, failed)

- unit: () -> Union(%, failed) if R has IntegralDomain

- zero?: % -> Boolean
from AbelianMonoid

BiModule(%, %) if R has CharacteristicZero or R has CharacteristicNonZero

BiModule(R, R)

CharacteristicNonZero if R has CharacteristicNonZero

CharacteristicZero if R has CharacteristicZero

CoercibleFrom Fraction Integer if R has RetractableTo Fraction Integer

CoercibleFrom Integer if R has RetractableTo Integer

Comparable if R has Finite or R has OrderedSet

ConvertibleTo InputForm if R has ConvertibleTo InputForm

Eltable(R, %) if R has Eltable(R, R)

Evalable R if R has Evalable R

FiniteRankNonAssociativeAlgebra R

InnerEvalable(R, R) if R has Evalable R

InnerEvalable(Symbol, R) if R has InnerEvalable(Symbol, R)

LeftModule % if R has CharacteristicZero or R has CharacteristicNonZero

MagmaWithUnit if R has CharacteristicZero or R has CharacteristicNonZero

Module R

Monoid if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeRing if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeSemiRing if R has CharacteristicZero or R has CharacteristicNonZero

OrderedSet if R has OrderedSet

PartialOrder if R has OrderedSet

RetractableTo Fraction Integer if R has RetractableTo Fraction Integer

RetractableTo Integer if R has RetractableTo Integer

RightModule % if R has CharacteristicZero or R has CharacteristicNonZero

Ring if R has CharacteristicZero or R has CharacteristicNonZero

Rng if R has CharacteristicZero or R has CharacteristicNonZero

SemiGroup if R has CharacteristicZero or R has CharacteristicNonZero

SemiRing if R has CharacteristicZero or R has CharacteristicNonZero

SemiRng if R has CharacteristicZero or R has CharacteristicNonZero

unitsKnown if R has IntegralDomain or R has CharacteristicZero or R has CharacteristicNonZero