Mathematical Preliminaries
A vector is represented as a matrix (column vector)
fricas
Scalar := Expression Integer
Type: Type
fricas
vect(x:List Scalar):Matrix Scalar == matrix map(y+->[y],x)
Function declaration vect : List(Expression(Integer)) -> Matrix(
Expression(Integer)) has been added to workspace.
Type: Void
fricas
vect [a0,a1,a2,a3]
fricas
Compiling function vect with type List(Expression(Integer)) ->
Matrix(Expression(Integer))
Type: Matrix(Expression(Integer))
Identity
fricas
ID:=diagonalMatrix([1,1,1,1])
Type: Matrix(Integer)
Verification
fricas
htrigs2exp == rule
cosh(a) == (exp(a)+exp(-a))/2
sinh(a) == (exp(a)-exp(-a))/2
Type: Void
fricas
sinhcosh == rule
?c*exp(a)+?c*exp(-a) == 2*c*cosh(a)
?c*exp(a)-?c*exp(-a) == 2*c*sinh(a)
?c*exp(a-b)+?c*exp(b-a) == 2*c*cosh(a-b)
?c*exp(a-b)-?c*exp(b-a) == 2*c*sinh(a-b)
Type: Void
fricas
expandhtrigs == rule
cosh(:x+y) == sinh(x)*sinh(y)+cosh(x)*cosh(y)
sinh(:x+y) == cosh(x)*sinh(y)+sinh(x)*cosh(y)
cosh(2*x) == 2*cosh(x)^2-1
sinh(2*x) == 2*sinh(x)*cosh(x)
Type: Void
fricas
expandhtrigs2 == rule
cosh(2*x+2*y) == 2*cosh(x+y)^2-1
sinh(2*x+2*y) == 2*sinh(x+y)*cosh(x+y)
cosh(2*x-2*y) == 2*cosh(x-y)^2-1
sinh(2*x-2*y) == 2*sinh(x-y)*cosh(x-y)
Type: Void
fricas
Simplify(x:Scalar):Scalar == htrigs sinhcosh simplify htrigs2exp x
Function declaration Simplify : Expression(Integer) -> Expression(
Integer) has been added to workspace.
Type: Void
fricas
possible(x)==subst(x, map(y+->(y=(random(100) - random(100))),variables x) )
Type: Void
fricas
is?(eq:Equation Scalar):Boolean == (Simplify(lhs(eq)-rhs(eq))=0)::Boolean
Function declaration is? : Equation(Expression(Integer)) -> Boolean
has been added to workspace.
Type: Void
fricas
Is?(eq:Equation(Matrix(Scalar))):Boolean == _
(map(Simplify,lhs(eq)-rhs(eq)) :: Matrix Expression AlgebraicNumber = _
zero(nrows(lhs(eq)),ncols(lhs(eq)))$Matrix Expression AlgebraicNumber )::Boolean
Function declaration Is? : Equation(Matrix(Expression(Integer))) ->
Boolean has been added to workspace.
Type: Void
Lorentz Form (metric)
fricas
G:=diagonalMatrix [-1,1,1,1]
Type: Matrix(Integer)
applied to a vector produces a co-vector (represent as a matrix or row vector)
fricas
g(x) == transpose(x)*G
Type: Void
fricas
g(vect [a0,a1,a2,a3])
fricas
Compiling function g with type Matrix(Expression(Integer)) -> Matrix
(Expression(Integer))
Type: Matrix(Expression(Integer))
Scalar product
fricas
dot(x,y) == (g(x)*y)::Scalar
Type: Void
fricas
dot(vect [a0,a1,a2,a3], vect [b0,b1,b2,b3])
fricas
Compiling function dot with type (Matrix(Expression(Integer)),Matrix
(Expression(Integer))) -> Expression(Integer)
Type: Expression(Integer)
Tensor product
fricas
tensor(x,y) == x*g(y)
Type: Void
fricas
tensor(vect [a0,a1,a2,a3], vect [b0,b1,b2,b3])
fricas
Compiling function tensor with type (Matrix(Expression(Integer)),
Matrix(Expression(Integer))) -> Matrix(Expression(Integer))
Type: Matrix(Expression(Integer))
Massive Objects
A material object (also referred to as an observer) is represented by a
time-like 4-vector
fricas
P:=vect [sqrt(p1^2+p2^2+p3^2+1),-p1,-p2,-p3];
Type: Matrix(Expression(Integer))
fricas
dot(P,P)
Type: Expression(Integer)
fricas
Q:=vect [sqrt(q1^2+q2^2+q3^2+1),-q1,-q2,-q3];
Type: Matrix(Expression(Integer))
fricas
R:=vect [sqrt(r1^2+r2^2+r3^2+1),-r1,-r2,-r3];
Type: Matrix(Expression(Integer))
fricas
S:=1/sqrt(1-s1^2-s2^2-s3^2)*vect [1,-s1,-s2,-s3]
Type: Matrix(Expression(Integer))
fricas
dot(S,S)
Type: Expression(Integer)
fricas
T:=1/sqrt(1-t1^2-t2^2-t3^2)*vect [1,-t1,-t2,-t3]
Type: Matrix(Expression(Integer))
fricas
U:=vect [cosh(u),sinh(u),0,0]
Type: Matrix(Expression(Integer))
fricas
simplify dot(U,U)
Type: Expression(Integer)
fricas
V:=vect [cosh(v),sinh(v),0,0]
Type: Matrix(Expression(Integer))
fricas
Simplify dot(U,V)
fricas
Compiling body of rule htrigs2exp to compute value of type Ruleset(
Integer,Integer,Expression(Integer))
fricas
Compiling body of rule sinhcosh to compute value of type Ruleset(
Integer,Integer,Expression(Integer))
fricas
Compiling function Simplify with type Expression(Integer) ->
Expression(Integer)
Type: Expression(Integer)
fricas
W:=vect [cosh(w),0,sinh(w),0]
Type: Matrix(Expression(Integer))
fricas
Simplify dot(U,W)
Type: Expression(Integer)
Observer "at rest"
fricas
vect [1,0,0,0]
Type: Matrix(Expression(Integer))
fricas
dot(%,%)
Type: Expression(Integer)
Associated with each such vector is the orthogonal 3-d Euclidean subspace
Relative Velocity
An object P has a unique relative velocity ω(P,Q) with respect
to object Q given by
fricas
ω(P,Q)==-P/dot(P,Q)-Q
Type: Void
fricas
ω(P,Q)
fricas
Compiling function ω with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer))
Type: Matrix(Expression(Integer))
fricas
ω(S,T)
Type: Matrix(Expression(Integer))
Idempotent Observers
fricas
PP:=tensor(-P,P)
Type: Matrix(Expression(Integer))
fricas
Is?(PP*PP=PP)
fricas
Compiling function Is? with type Equation(Matrix(Expression(Integer)
)) -> Boolean
Type: Boolean
fricas
trace(PP)
Type: Expression(Integer)
fricas
QQ:=tensor(-Q,Q)
Type: Matrix(Expression(Integer))
fricas
is?(trace(PP*QQ)=dot(P,Q)^2)
fricas
Compiling function is? with type Equation(Expression(Integer)) ->
Boolean
Type: Boolean
fricas
Is?(PP*QQ*PP = trace(PP*QQ)@Scalar * PP)
Type: Boolean
Unit
fricas
n:=map(Simplify,PP*QQ+QQ*PP-PP-QQ);
Type: Matrix(Expression(Integer))
fricas
N:=map(Simplify,2/trace(n)*n);
Type: Matrix(Expression(Integer))
fricas
Simplify trace N
Type: Expression(Integer)
fricas
Is?(N*N=N)
Type: Boolean
fricas
Is?(PP*N=PP)
Type: Boolean
fricas
Is?(QQ*N=QQ)
Type: Boolean
fricas
Is?(N*PP=PP)
Type: Boolean
fricas
Is?(N*QQ=QQ)
Type: Boolean
Momentum
fricas
m:=(PP*QQ+QQ*PP)/dot(P,Q)-PP-QQ;
Type: Matrix(Expression(Integer))
fricas
M:=1/trace(m)*m;
Type: Matrix(Expression(Integer))
fricas
trace M
Type: Expression(Integer)
fricas
Is?(M*M=M)
Type: Boolean