Ref: http://arxiv.org/abs/0711.3220
Fourvector algebra
Author: Diego Saa (Submitted on 20 Nov 2007)
Abstract: The algebra of fourvectors is described. The fourvectors are more appropriate than the Hamilton quaternions for its use in Physics and the sciences in general. The fourvectors embrace the 3D vectors in a natural form. It is shown the excellent ability to perform rotations with the use of fourvectors, as well as their use in relativity for producing Lorentz boosts, which are understood as simple rotations.
fricas
_*_*(x,y)==concat(x(1) * y(1) + dot(x(2..), y(2..)), x(1) * y(2..) - x(2..) * y(1) + cross(x(2..), y(2..)))
Type: Void
fricas
e:Vector INT:=[1,0,0,0]
Type: Vector(Integer)
fricas
i:Vector INT:=[0,1,0,0]
Type: Vector(Integer)
fricas
j:Vector INT:=[0,0,1,0]
Type: Vector(Integer)
fricas
k:Vector INT:=[0,0,0,1]
Type: Vector(Integer)
fricas
test(e**e=e) and _
test(i**i=e) and _
test(j**j=e) and _
test(k**k=e) and _
test(e**i=i) and _
test(e**j=j) and _
test(e**k=k) and _
test(i**e=-i) and _
test(j**e=-j) and _
test(k**e=-k) and _
test(i**j=k) and _
test(j**i=-k) and _
test(k**i=j) and _
test(i**k=-j) and _
test(j**k=i) and _
test(k**j=-i)
fricas
Compiling function ** with type (Vector(Integer), Vector(Integer))
-> Vector(Integer)
Type: Boolean
Axiom has a domain for NonAssociative? Algebra
This is documented in the article:
Computations in Algebras of Fixed Rank by Johannes Grabmeir and Robert Wisbauer, from the book "Computational Algebra"
By Klaus G. Fischer, Philippe Loustaunau, Jay Shapiro.
The algebra above can be given by structural constants.
fricas
)clear all
All user variables and function definitions have been cleared.
sc:Vector Matrix Fraction Integer := [ _
[[ 1, 0, 0, 0], _
[ 0, 1, 0, 0], _
[ 0, 0, 1, 0], _
[ 0, 0, 0, 1]], _
[[ 0, 1, 0, 0], _
[-1, 0, 0, 0], _
[ 0, 0, 0, 1], _
[ 0, 0,-1, 0]], _
[[ 0, 0, 1, 0], _
[ 0, 0, 0,-1], _
[-1, 0, 0, 0], _
[ 0, 1, 0, 0]], _
[[ 0, 0, 0, 1], _
[ 0, 0, 1, 0], _
[ 0,-1, 0, 0], _
[-1, 0, 0, 0]]];
Type: Vector(Matrix(Fraction(Integer)))
fricas
V:=AlgebraGivenByStructuralConstants(Fraction Integer, 4, [e,i,j,k],sc)
Type: Type
Multiplication
fricas
a:=basis()$V
Type: Vector(AlgebraGivenByStructuralConstants
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]))
fricas
matrix([[(a.i * a.j) for j in 1..4] for i in 1..4])$OutputForm
Commutator and Associator
fricas
matrix([[commutator(a.x,a.y) for x in 1..4] for y in 1..4])$OutputForm
fricas
[matrix([[associator(a.x,a.y,a.z) for x in 1..4] for y in 1..4])$OutputForm for z in 1..4]
fricas
for x in 1..4 repeat
for y in 1..4 repeat
for z in 1..4 repeat
if associator(a.x,a.y,a.z) ~= 0$V then
output([[a.x,a.y,a.z],"=",associator(a.x,a.y,a.z)])
[[i, e, e], "=", 2 i]
[[i, e, i], "=", - 2 e]
[[i, e, j], "=", - 2 k]
[[i, e, k], "=", 2 j]
[[i, i, e], "=", 2 e]
[[i, i, i], "=", 2 i]
[[i, i, j], "=", 2 j]
[[i, i, k], "=", 2 k]
[[j, e, e], "=", 2 j]
[[j, e, i], "=", 2 k]
[[j, e, j], "=", - 2 e]
[[j, e, k], "=", - 2 i]
[[j, j, e], "=", 2 e]
[[j, j, i], "=", 2 i]
[[j, j, j], "=", 2 j]
[[j, j, k], "=", 2 k]
[[k, e, e], "=", 2 k]
[[k, e, i], "=", - 2 j]
[[k, e, j], "=", 2 i]
[[k, e, k], "=", - 2 e]
[[k, k, e], "=", 2 e]
[[k, k, i], "=", 2 i]
[[k, k, j], "=", 2 j]
[[k, k, k], "=", 2 k]
Type: Void
Volume form?
fricas
a.2 * (a.3 * a.4) = (a.2 * a.3) * a.4
Type: Equation(AlgebraGivenByStructuralConstants
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]))
Check standard properties
fricas
leftUnit()$V
Type: Union(AlgebraGivenByStructuralConstants
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]),
...)
fricas
rightUnit()$V
this algebra has no right unit
Type: Union("failed",...)
fricas
alternative?()$V
algebra is not left alternative
Type: Boolean
fricas
leftAlternative?()$V
algebra is not left alternative
Type: Boolean
fricas
rightAlternative?()$V
algebra is not right alternative
Type: Boolean
fricas
associative?()$V
algebra is not associative
Type: Boolean
fricas
antiAssociative?()$V
algebra is not anti-associative
Type: Boolean
fricas
--powerAssociative?()$V
commutative?()$V
algebra is not commutative
Type: Boolean
fricas
antiCommutative?()$V
algebra is not anti-commutative
Type: Boolean
fricas
jordanAlgebra?()$V
algebra is not commutative
this is not a Jordan algebra
Type: Boolean
fricas
jordanAdmissible?()$V
algebra is not Jordan admissible
Type: Boolean
fricas
noncommutativeJordanAlgebra?()$V
algebra is not flexible
this is not a noncommutative Jordan algebra, as it is not flexible
Type: Boolean
fricas
lieAlgebra?()$V
algebra is not anti-commutative
this is not a Lie algebra
Type: Boolean
fricas
lieAdmissible?()$V
algebra is not Lie admissible
Type: Boolean
fricas
jacobiIdentity?()$V
Jacobi identity does not hold
Type: Boolean
Commuting elements
fricas
V has FramedNonAssociativeAlgebra(Fraction Integer)
Type: Boolean
fricas
basisOfCommutingElements()$AlgebraPackage(Fraction Integer,V)
Type: List(AlgebraGivenByStructuralConstants
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]))
fricas
basisOfCenter()$AlgebraPackage(Fraction Integer,V)
Type: List(AlgebraGivenByStructuralConstants
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]))
fricas
basisOfCentroid()$AlgebraPackage(Fraction Integer,V)
Type: List(Matrix(Fraction(Integer)))
fricas
basisOfNucleus()$AlgebraPackage(Fraction Integer,V)
Type: List(AlgebraGivenByStructuralConstants
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]))
fricas
basisOfLeftNucloid()$AlgebraPackage(Fraction Integer,V)
Type: List(Matrix(Fraction(Integer)))
Symbolic computations
fricas
G:=GenericNonAssociativeAlgebra(Fraction Integer, 4, [e,i,j,k],sc)
Type: Type
Look for Idempotents
fricas
conditionsForIdempotents()$G
Type: List(Polynomial(Fraction(Integer)))
fricas
gb:=groebnerFactorize %
Type: List(List(Polynomial(Fraction(Integer))))
fricas
associatorDependence()$G
Type: List(Vector(Fraction(Polynomial(Fraction(Integer)))))
fricas
q:=leftRankPolynomial()$G
Type: SparseUnivariatePolynomial
?(Fraction(Polynomial(Fraction(Integer))))
fricas
map(factor,coefficients q)
Type: List(Factored(Fraction(Polynomial(Fraction(Integer)))))
fricas
rightUnit()$G
this algebra has no right unit
Type: Union("failed",...)
fricas
p1:=generic([x1,y1,z1,w1])$G
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
p2:=generic([x2,y2,z2,w2])$G
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
p3:=generic([x3,y3,z3,w3])$G
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
leftRecip(p1)$G
Type: Union(GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]]),
...)
fricas
rightRecip(p1)$G
this algebra has no right unit
Type: Union("failed",...)
fricas
leftRegularRepresentation(p1)
Type: Matrix(Fraction(Polynomial(Fraction(Integer))))
fricas
rightRegularRepresentation(p1)
Type: Matrix(Fraction(Polynomial(Fraction(Integer))))
fricas
associator(p1,p2,p3)$G
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
associator(p1,p1,p2)
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
associator(p1,p2,p2)
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
p1*p1
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
p1*p2 + p2*p1
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])
fricas
p1*(p1*p1)+(p1*p1)*p1
Type: GenericNonAssociativeAlgebra
?(Fraction(Integer),
4,
[e,
i,
j,
k],
[[[1,
0,
0,
0],
[0,
1,
0,
0],
[0,
0,
1,
0],
[0,
0,
0,
1]],
[[0,
1,
0,
0],
[-1,
0,
0,
0],
[0,
0,
0,
1],
[0,
0,
-1,
0]],
[[0,
0,
1,
0],
[0,
0,
0,
-1],
[-1,
0,
0,
0],
[0,
1,
0,
0]],
[[0,
0,
0,
1],
[0,
0,
1,
0],
[0,
-1,
0,
0],
[-1,
0,
0,
0]]])