login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

## Preliminaries

Lorentz Form (metric) applied to a vector ( matrix) produces a co-vector ( matrix). Scalar and tensor products use matrix multiplication.

fricas
ID:=diagonalMatrix [1,1,1,1];
Type: Matrix(Integer)
fricas
G:=diagonalMatrix [-1,1,1,1]
 (1)
Type: Matrix(Integer)
fricas
Scalar := Expression Integer
 (2)
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
g(x:Matrix Scalar):Matrix Scalar == transpose(x)*G
Function declaration g : Matrix(Expression(Integer)) -> Matrix(
Expression(Integer)) has been added to workspace.
Type: Void
fricas
dot(x:Matrix Scalar,y:Matrix Scalar):Scalar == g(x)*y
Function declaration dot : (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Expression(Integer) has been added to
workspace.
Type: Void
fricas
tensor(x:Matrix Scalar,y:Matrix Scalar):Matrix Scalar == x*g(y)
Function declaration tensor : (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer)) has been
added to workspace.
Type: Void

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

## Massive Objects

A material object (also referred to as an observer) is represented by a time-like 4-vector

fricas
P:=vect [p0,p1,p2,p3]
fricas
Compiling function vect with type List(Expression(Integer)) ->
Matrix(Expression(Integer))
 (3)
Type: Matrix(Expression(Integer))
fricas
dot(P,P)
fricas
Compiling function g with type Matrix(Expression(Integer)) -> Matrix
(Expression(Integer))
fricas
Compiling function dot with type (Matrix(Expression(Integer)),Matrix
(Expression(Integer))) -> Expression(Integer)
 (4)
Type: Expression(Integer)
fricas
solve(%=-1,p0)
 (5)
Type: List(Equation(Expression(Integer)))
fricas
Q:=vect [q0,q1,q2,q3];
Type: Matrix(Expression(Integer))
fricas
S:=1/sqrt(1-s1^2-s2^2-s3^2)*vect [1,-s1,-s2,-s3]
 (6)
Type: Matrix(Expression(Integer))
fricas
dot(S,S)
 (7)
Type: Expression(Integer)
fricas
T:=1/sqrt(1-t1^2-t2^2-t3^2)*vect [1,-t1,-t2,-t3];
Type: Matrix(Expression(Integer))
fricas
W:=1/sqrt(1-w1^2-w2^2-w3^2)*vect [1,-w1,-w2,-w3];
Type: Matrix(Expression(Integer))
fricas
U:=vect [cosh(u),sinh(u),0,0]
 (8)
Type: Matrix(Expression(Integer))
fricas
simplify dot(U,U)
 (9)
Type: Expression(Integer)
fricas
V:=vect [cosh(v),sinh(v),0,0];
Type: Matrix(Expression(Integer))

## Massless Photons

A photon is a represented by a light-like null 4-vector

fricas
A:=vect [a0,a0*a1,a0*a2,a0*a3]
 (10)
Type: Matrix(Expression(Integer))
fricas
solve(dot(A,A)=0,a3)
 (11)
Type: List(Equation(Expression(Integer)))
fricas
A:=vect [a0,a0*a1,a0*a2,a0*sqrt(1-a1^2-a2^2)]
 (12)
Type: Matrix(Expression(Integer))
fricas
dot(A,A)
 (13)
Type: Expression(Integer)
fricas
B:=vect [b0,b0*b1,b0*b2,b0*sqrt(1-b1^2-b2^2)]
 (14)
Type: Matrix(Expression(Integer))
fricas
C:=vect [c0,c0*c1,c0*c2,c0*sqrt(1-c1^2-c2^2)]
 (15)
Type: Matrix(Expression(Integer))

Observer "at rest"

fricas
R:=vect [1,0,0,0]
 (16)
Type: Matrix(Expression(Integer))
fricas
dot(R,R)
 (17)
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
map(Simplify, ω(P,Q))
fricas
Compiling function ω with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer))
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)
 (18)
Type: Matrix(Expression(Integer))
fricas
map(Simplify, ω(P,R))
 (19)
Type: Matrix(Expression(Integer))
fricas
map(Simplify, ω(S,T))
 (20)
Type: Matrix(Expression(Integer))
fricas
map(Simplify, ω(S,R))
 (21)
Type: Matrix(Expression(Integer))
fricas
map(Simplify, ω(U,V))
 (22)
Type: Matrix(Expression(Integer))

Idempotent Observers

fricas
PP:=tensor(-P,P)
fricas
Compiling function tensor with type (Matrix(Expression(Integer)),
Matrix(Expression(Integer))) -> Matrix(Expression(Integer))
 (23)
Type: Matrix(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
 (24)
Type: Boolean
fricas
RR:=tensor(-R,R)
 (25)
Type: Matrix(Expression(Integer))
fricas
SS:=map(Simplify,tensor(-S,S))
 (26)
Type: Matrix(Expression(Integer))
fricas
Is?(SS*SS=SS)
fricas
Compiling function Is? with type Equation(Matrix(Expression(Integer)
)) -> Boolean
 (27)
Type: Boolean
fricas
trace(SS)
 (28)
Type: Expression(Integer)
fricas
TT:=map(Simplify,tensor(-T,T));
Type: Matrix(Expression(Integer))
fricas
Is?(SS*TT*SS = dot(S,T)^2 * SS)
 (29)
Type: Boolean
fricas
UU:=map(Simplify,tensor(-U,U))
 (30)
Type: Matrix(Expression(Integer))
fricas
VV:=map(Simplify,tensor(-V,V));
Type: Matrix(Expression(Integer))
fricas
map(Simplify, UU*VV)
 (31)
Type: Matrix(Expression(Integer))
fricas
WW:=map(Simplify,tensor(-W,W));
Type: Matrix(Expression(Integer))
fricas
Is?(SS*TT*WW = -dot(S,T)*dot(T,W)/dot(S,W)*SS*WW)
 (32)
Type: Boolean
fricas
Is?(SS*TT*SS = dot(S,T)^2*SS)
 (33)
Type: Boolean

Nilpotent Operators

fricas
AA:=tensor(-A,A)
 (34)
Type: Matrix(Expression(Integer))
fricas
BB:=tensor(-B,B);
Type: Matrix(Expression(Integer))
fricas
CC:=tensor(-C,C);
Type: Matrix(Expression(Integer))
fricas
Is?(AA*AA=0*AA)
 (35)
Type: Boolean
fricas
trace(AA)
 (36)
Type: Expression(Integer)
fricas
is?(trace(AA*BB)=dot(A,B)^2)
 (37)
Type: Boolean
fricas
dot(A,B)
 (38)
Type: Expression(Integer)
fricas
possible(%)::Complex Float
fricas
Compiling function possible with type Expression(Integer) ->
Expression(Integer)
 (39)
Type: Complex(Float)
fricas
Is?(AA*BB*CC = -dot(A,B)*dot(B,C)/dot(A,C)*AA*CC)
 (40)
Type: Boolean
fricas
Is?(AA*BB*SS = -dot(A,B)*dot(B,S)/dot(A,S)*AA*SS)
 (41)
Type: Boolean
fricas
Is?(AA*BB*SS=SS*AA*BB)
 (42)
Type: Boolean
fricas
Is?(AA*BB*AA = dot(A,B)^2*AA)
 (43)
Type: Boolean

Lie Bracket

fricas
STW:=(SS*TT-TT*SS)*WW;
Type: Matrix(Expression(Integer))
fricas
Is?(STW*STW=0*STW)
 (44)
Type: Boolean
fricas
trace(STW)
 (45)
Type: Expression(Integer)
fricas
solve(map(x+->x=0,members(STW-AA)),[a0,a1,a2,a3])
 (46)
Type: List(List(Equation(Expression(Integer))))
fricas
ABC:=(AA*BB-BB*AA)*CC;
Type: Matrix(Expression(Integer))
fricas
Is?(ABC*ABC=0*ABC)
 (47)
Type: Boolean
fricas
trace(ABC)
 (48)
Type: Expression(Integer)
fricas
PQR:=(PP*QQ-PP*QQ)*tensor(-vect([r0,r1,r2,r3]),vect([r0,r1,r2,r3]));
Type: Matrix(Expression(Integer))
fricas
Is?(PQR*PQR=0*PQR)
 (49)
Type: Boolean
fricas
trace(PQR)
 (50)
Type: NonNegativeInteger?
fricas
map(Simplify,(PP*QQ-QQ*PP)*(PP*QQ-QQ*PP))
 (51)
Type: Matrix(Expression(Integer))
fricas
trace((PP*QQ-QQ*PP))
 (52)
Type: Expression(Integer)

Unit

fricas
-(PP*QQ+QQ*PP)+PP+QQ;
Type: Matrix(Expression(Integer))
fricas
2/trace(%)*%;
Type: Matrix(Expression(Integer))
fricas
trace %
 (53)
Type: Expression(Integer)
fricas
n:=map(Simplify,-(SS*TT+TT*SS)+SS+TT);
Type: Matrix(Expression(Integer))
fricas
Is?(n = (SS-TT)*(SS-TT) )
 (54)
Type: Boolean
fricas
N:=map(Simplify,2/trace(n)*n);
Type: Matrix(Expression(Integer))
fricas
Simplify trace N
 (55)
Type: Expression(Integer)
fricas
Is?(N*N=N)
 (56)
Type: Boolean
fricas
Is?(SS*N=SS)
 (57)
Type: Boolean
fricas
Is?(TT*N=TT)
 (58)
Type: Boolean
fricas
Is?(N*SS=SS)
 (59)
Type: Boolean
fricas
Is?(N*TT=TT)
 (60)
Type: Boolean

fricas
-(PP*RR+RR*PP)+PP+RR;
Type: Matrix(Expression(Integer))
fricas
2/trace(%)*%
 (61)
Type: Matrix(Expression(Integer))
fricas
-(SS*RR+RR*SS)+SS+RR;
Type: Matrix(Expression(Integer))
fricas
2/trace(%)*%
 (62)
Type: Matrix(Expression(Integer))
fricas
-(UU*RR+RR*UU)+UU+RR;
Type: Matrix(Expression(Integer))
fricas
map(Simplify,2/trace(%)*%)
 (63)
Type: Matrix(Expression(Integer))
fricas
-(UU*VV+VV*UU)+UU+VV;
Type: Matrix(Expression(Integer))
fricas
map(Simplify,2/trace(%)*%)
 (64)
Type: Matrix(Expression(Integer))

Momentum

fricas
m:=map(x+->factor(numer x)/factor(denom x),-(PP*QQ+QQ*PP)/dot(P,Q)+PP+QQ)
 (65)
Type: Matrix(Fraction(Factored(SparseMultivariatePolynomial?(Integer,Kernel(Expression(Integer))))))
fricas
Is?(m = tensor(-(P+Q),(P+Q)))
 (66)
Type: Boolean
fricas
factor trace m
 (67)
Type: Factored(SparseMultivariatePolynomial?(Integer,Kernel(Expression(Integer))))
fricas
M:=1/trace(m)*m::Matrix Scalar;
Type: Matrix(Expression(Integer))
fricas
trace M
 (68)
Type: Expression(Integer)
fricas
Is?(M*M=M)
 (69)
Type: Boolean

fricas
(PP*RR+RR*PP)/dot(P,R)-PP-RR;
Type: Matrix(Expression(Integer))
fricas
1/trace(%)*%
 (70)
Type: Matrix(Expression(Integer))
fricas
trace %
 (71)
Type: Expression(Integer)
fricas
--(SS*RR+RR*SS)/dot(S,R)-SS-RR;
--map(Simplify,1/trace(%)*%)
--(UU*VV+VV*UU)/dot(U,V)-UU-VV;
--1/trace(%)*%
(UU*RR+RR*UU)/dot(U,R)-UU-RR;
Type: Matrix(Expression(Integer))
fricas
map(Simplify,1/trace(%)*%)
 (72)
Type: Matrix(Expression(Integer))

Unit for 3 Observers

fricas
P:=1/sqrt(1-p1^2-p2^2-p3^2)*vect [1,-p1,-p2,-p3]
 (73)
Type: Matrix(Expression(Integer))
fricas
PP:=tensor(-P,P)
 (74)
Type: Matrix(Expression(Integer))
fricas
Q:=1/sqrt(1-q1^2-q2^2-q3^2)*vect [1,-q1,-q2,-q3]
 (75)
Type: Matrix(Expression(Integer))
fricas
QQ:=tensor(-Q,Q)
 (76)
Type: Matrix(Expression(Integer))
fricas
R:=1/sqrt(1-r1^2-r2^2-r3^2)*vect [1,-r1,-r2,-r3]
 (77)
Type: Matrix(Expression(Integer))
fricas
RR:=tensor(-R,R)
 (78)
Type: Matrix(Expression(Integer))
fricas
gamma(p,q) == - dot(p,q)
Type: Void
fricas
-- Silberstein
f0 := - determinant(matrix [[1,gamma(P,Q),gamma(P,R)], _
[gamma(P,Q),1,gamma(Q,R)], _
[gamma(P,R),gamma(Q,R),1]] )
fricas
Compiling function gamma with type (Matrix(Expression(Integer)),
Matrix(Expression(Integer))) -> Expression(Integer)
 (79)
Type: Expression(Integer)
fricas
f:=gamma(P,Q)^2 + gamma(P,R)^2 + gamma(Q,R)^2 - 2*gamma(P,Q)*gamma(P,R)*gamma(Q,R) - 1
 (80)
Type: Expression(Integer)
fricas
test(f0 = f)
 (81)
Type: Boolean
fricas
--
nf:=map(Simplify, (-gamma(P,Q)*gamma(P,R)+gamma(Q,R))/gamma(Q,R)*RR*QQ + _
(-gamma(Q,R)*gamma(Q,P)+gamma(R,P))/gamma(R,P)*RR*PP + _
(-gamma(P,Q)*gamma(P,R)+gamma(Q,R))/gamma(Q,R)*QQ*RR + _
(-gamma(R,Q)*gamma(R,P)+gamma(Q,P))/gamma(Q,P)*QQ*PP + _
(-gamma(Q,R)*gamma(Q,P)+gamma(R,P))/gamma(R,P)*PP*RR + _
(-gamma(R,Q)*gamma(R,P)+gamma(Q,P))/gamma(Q,P)*PP*QQ + _
(gamma(Q,R)^2-1)*PP + _
(gamma(P,Q)^2-1)*RR + _
(gamma(P,R)^2-1)*QQ );
Type: Matrix(Expression(Integer))
fricas
N := 1/f*nf;
Type: Matrix(Expression(Integer))
fricas
--N:=map(Simplify,3/trace(n)*n);
Simplify trace N
 (82)
Type: Expression(Integer)
fricas
Is?(N*N=N)
 (83)
Type: Boolean
fricas
map(possible,N*N-N)
 (84)
Type: Matrix(Expression(Integer))
fricas
Is?(PP*N=PP)
 (85)
Type: Boolean
fricas
Is?(QQ*N=QQ)
 (86)
Type: Boolean
fricas
Is?(RR*N=RR)
 (87)
Type: Boolean
fricas
Is?(N*PP=PP)
 (88)
Type: Boolean
fricas
Is?(N*QQ=QQ)
 (89)
Type: Boolean
fricas
Is?(N*RR=RR)
 (90)
Type: Boolean

Orthogonal Observers

fricas
PP' := N - (1/trace(PP))*PP
 (91)
Type: Matrix(Expression(Integer))
fricas
Is?(PP'*PP' = PP')
 (92)
Type: Boolean
fricas
trace PP'
 (93)
Type: Expression(Integer)
fricas
Is?(PP'*PP = 0*PP)
 (94)
Type: Boolean
fricas
-- derivation
Is?(PP'*(QQ*RR) = (PP'*QQ)*RR + QQ*(PP'*RR))
 (95)
Type: Boolean

 Subject:   Be Bold !! ( 15 subscribers )