# OctonionCategory R¶

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

from BasicType

>=: (%, %) -> 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

~=: (%, %) -> Boolean

from BasicType

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, %) -> %
associative?: () -> Boolean
associator: (%, %, %) -> %
associatorDependence: () -> List Vector R if R has IntegralDomain
basis: () -> Vector %

from FramedModule R

characteristic: () -> NonNegativeInteger if R has CharacteristicZero or R has CharacteristicNonZero
charthRoot: % -> Union(%, failed) if R has CharacteristicNonZero
coerce: % -> OutputForm
coerce: Fraction Integer -> % if R has RetractableTo Fraction Integer
coerce: Integer -> % if R has CharacteristicNonZero or R has RetractableTo Integer or R has CharacteristicZero
coerce: R -> %

from CoercibleFrom R

commutative?: () -> Boolean
commutator: (%, %) -> %
conditionsForIdempotents: () -> List Polynomial 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
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
elt: (%, R) -> % if R has Eltable(R, R)

from Eltable(R, %)

enumerate: () -> List % if R has Finite

from Finite

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)

flexible?: () -> Boolean
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
jordanAlgebra?: () -> Boolean
latex: % -> String

from SetCategory

leftAlternative?: () -> Boolean
leftCharacteristicPolynomial: % -> SparseUnivariatePolynomial R
leftDiscriminant: () -> 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
leftRecip: % -> Union(%, failed) if R has IntegralDomain or R has CharacteristicZero or R has CharacteristicNonZero
leftRegularRepresentation: % -> Matrix R
leftRegularRepresentation: (%, Vector %) -> Matrix R
leftTrace: % -> R
leftTraceMatrix: () -> Matrix R
leftTraceMatrix: Vector % -> Matrix R
leftUnit: () -> Union(%, failed) if R has IntegralDomain
leftUnits: () -> Union(Record(particular: %, basis: List %), failed) if R has IntegralDomain
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

noncommutativeJordanAlgebra?: () -> Boolean
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) -> %
powerAssociative?: () -> Boolean
random: () -> % if R has Finite

from Finite

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
retract: % -> Integer if R has RetractableTo Integer
retract: % -> R

from RetractableTo R

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

from RetractableTo R

rightAlternative?: () -> Boolean
rightCharacteristicPolynomial: % -> SparseUnivariatePolynomial R
rightDiscriminant: () -> 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
rightRecip: % -> Union(%, failed) if R has IntegralDomain or R has CharacteristicZero or R has CharacteristicNonZero
rightRegularRepresentation: % -> Matrix R
rightRegularRepresentation: (%, Vector %) -> Matrix R
rightTrace: % -> R
rightTraceMatrix: () -> Matrix 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

someBasis: () -> Vector %
structuralConstants: () -> Vector Matrix R
structuralConstants: Vector % -> Vector Matrix R
subtractIfCan: (%, %) -> Union(%, failed)
unit: () -> Union(%, failed) if R has IntegralDomain
zero?: % -> Boolean

from AbelianMonoid

AbelianGroup

AbelianMonoid

AbelianSemiGroup

BasicType

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

BiModule(R, R)

CancellationAbelianMonoid

Comparable if R has Finite or R has OrderedSet

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

Evalable R if R has Evalable R

Finite if R has Finite

Hashable if R has Hashable

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

Magma

MagmaWithUnit if R has CharacteristicZero or R has CharacteristicNonZero

Monoid if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeRing if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeRng

NonAssociativeSemiRing if R has CharacteristicZero or R has CharacteristicNonZero

NonAssociativeSemiRng

OrderedSet if R has OrderedSet

PartialOrder if R has OrderedSet

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

SetCategory

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