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.
axiom
_*_*(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
axiom
e:Vector INT:=[1,0,0,0]
Type: Vector Integer
axiom
i:Vector INT:=[0,1,0,0]
Type: Vector Integer
axiom
j:Vector INT:=[0,0,1,0]
Type: Vector Integer
axiom
k:Vector INT:=[0,0,0,1]
Type: Vector Integer
axiom
Compiling function ** with type (Vector Integer,Vector Integer) ->
Vector Integer
Type: Equation Vector Integer
Type: Equation Vector Integer
Type: Equation Vector Integer
Type: Equation Vector Integer
axiom
e*i=e
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
e*j=e
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
e*k=e
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
i*e=-e
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
j*e=-e
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
k*e=-e
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
i*j=k
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
j*i=-k
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
i*k=j
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
k*i=-j
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
j*k=i
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
k*j=-i
There are 34 exposed and 23 unexposed library operations named *
having 2 argument(s) but none was determined to be applicable.
Use HyperDoc Browse, or issue
)display op *
to learn more about the available operations. Perhaps
package-calling the operation or using coercions on the arguments
will allow you to apply the operation.
Cannot find a definition or applicable library operation named *
with argument type(s)
Vector Integer
Vector Integer
Perhaps you should use "@" to indicate the required return type,
or "$" to specify which version of the function you need.
axiom
all:=[a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
Type: List OrderedVariableList
? [a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?
axiom
a:Vector DMP(all,INT):=[a1,a2,a3,a4]
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
b:Vector DMP(all,INT):=[b1,b2,b3,b4]
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
c:Vector DMP(all,INT):=[c1,c2,c3,c4]
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
-- Jordan?
a ** (b ** c) + c ** (a ** b) + b ** (c ** a)
axiom
Compiling function ** with type (Vector
DistributedMultivariatePolynomial([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,
c3,c4],Integer),Vector DistributedMultivariatePolynomial([a1,a2,
a3,a4,b1,b2,b3,b4,c1,c2,c3,c4],Integer)) -> Vector
DistributedMultivariatePolynomial([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,
c3,c4],Integer)
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
a0:Vector DMP(all,INT):=[0,a2,a3,a4]
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
b0:Vector DMP(all,INT):=[0,b2,b3,b4]
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
c0:Vector DMP(all,INT):=[0,c2,c3,c4]
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
-- Jordan?
a0 ** (b0 ** c0) + c0 ** (a0 ** b0) + b0 ** (c0 ** a0)
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
axiom
(a0 ** b0) ** c0 + (c0 ** a0) ** b0 + (b0 ** c0) ** a0
Type: Vector DistributedMultivariatePolynomial
?([a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4]
?,Integer)
Axiom has a domain for NonAssociative? Algebra
axiom
)show NonAssociativeAlgebra
NonAssociativeAlgebra R: CommutativeRing is a category constructor
Abbreviation for NonAssociativeAlgebra is NAALG
This constructor is exposed in this frame.
Issue )edit /usr/local/lib/axiom/target/x86_64-unknown-linux/../../src/algebra/NAALG.spad to see algebra source code for NAALG
------------------------------- Operations --------------------------------
?*? : (R,%) -> % ?*? : (%,R) -> %
?*? : (%,%) -> % ?*? : (Integer,%) -> %
?*? : (PositiveInteger,%) -> % ?**? : (%,PositiveInteger) -> %
?+? : (%,%) -> % ?-? : (%,%) -> %
-? : % -> % ?=? : (%,%) -> Boolean
0 : () -> % antiCommutator : (%,%) -> %
associator : (%,%,%) -> % coerce : % -> OutputForm
commutator : (%,%) -> % hash : % -> SingleInteger
latex : % -> String sample : () -> %
zero? : % -> Boolean ?~=? : (%,%) -> Boolean
?*? : (NonNegativeInteger,%) -> %
leftPower : (%,PositiveInteger) -> %
plenaryPower : (%,PositiveInteger) -> %
rightPower : (%,PositiveInteger) -> %
subtractIfCan : (%,%) -> Union(%,"failed")