PreliminariesLorentz Form (metric) applied to a vector ( matrix) produces a co-vector ( matrix). Scalar and tensor products use matrix multiplication. fricas (1) -> ID:=diagonalMatrix [1, Type: Matrix(Integer)
fricas G:=diagonalMatrix [-1,
Type: Matrix(Integer)
fricas Scalar := Expression Integer
Type: Type
fricas vect(x:List Scalar):Matrix Scalar == matrix map(y+->[y], Type: Void
fricas g(x:Matrix Scalar):Matrix Scalar == transpose(x)*G Type: Void
fricas dot(x:Matrix Scalar, Type: Void
fricas tensor(x:Matrix Scalar, 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 Type: Void
fricas possible(x)==subst(x, Type: Void
fricas is?(eq:Equation Scalar):Boolean == (Simplify(lhs(eq)-rhs(eq))=0)::Boolean Type: Void
fricas Is?(eq:Equation(Matrix(Scalar))):Boolean == _ (map(Simplify, Type: Void
Massive ObjectsA material object (also referred to as an observer) is represented by a time-like 4-vector fricas P:=vect [p0, fricas Compiling function vect with type List(Expression(Integer)) -> Matrix(Expression(Integer))
Type: Matrix(Expression(Integer))
fricas dot(P, fricas Compiling function g with type Matrix(Expression(Integer)) -> Matrix (Expression(Integer)) fricas Compiling function dot with type (Matrix(Expression(Integer)),
Type: Expression(Integer)
fricas solve(%=-1,
Type: List(Equation(Expression(Integer)))
fricas Q:=vect [q0, Type: Matrix(Expression(Integer))
fricas S:=1/sqrt(1-s1^2-s2^2-s3^2)*vect [1,
Type: Matrix(Expression(Integer))
fricas dot(S,
Type: Expression(Integer)
fricas T:=1/sqrt(1-t1^2-t2^2-t3^2)*vect [1, Type: Matrix(Expression(Integer))
fricas W:=1/sqrt(1-w1^2-w2^2-w3^2)*vect [1, Type: Matrix(Expression(Integer))
fricas U:=vect [cosh(u),
Type: Matrix(Expression(Integer))
fricas simplify dot(U,
Type: Expression(Integer)
fricas V:=vect [cosh(v), Type: Matrix(Expression(Integer))
Massless PhotonsA photon is a represented by a light-like null 4-vector fricas A:=vect [a0,
Type: Matrix(Expression(Integer))
fricas solve(dot(A,
Type: List(Equation(Expression(Integer)))
fricas A:=vect [a0,
Type: Matrix(Expression(Integer))
fricas dot(A,
Type: Expression(Integer)
fricas B:=vect [b0,
Type: Matrix(Expression(Integer))
fricas C:=vect [c0,
Type: Matrix(Expression(Integer))
Observer "at rest" fricas R:=vect [1,
Type: Matrix(Expression(Integer))
fricas dot(R,
Type: Expression(Integer)
Associated with each such vector is the orthogonal 3-d Euclidean subspace Relative VelocityAn object P has a unique relative velocity ω(P,Q) with respect to object Q given by fricas ω(P, Type: Void
fricas map(Simplify, fricas Compiling function ω with type (Matrix(Expression(Integer)), fricas Compiling body of rule htrigs2exp to compute value of type Ruleset( Integer, fricas Compiling body of rule sinhcosh to compute value of type Ruleset( Integer, fricas Compiling function Simplify with type Expression(Integer) -> Expression(Integer)
Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
Idempotent Observers fricas PP:=tensor(-P, fricas Compiling function tensor with type (Matrix(Expression(Integer)),
Type: Matrix(Expression(Integer))
fricas QQ:=tensor(-Q, Type: Matrix(Expression(Integer))
fricas is?(trace(PP*QQ)=dot(P, fricas Compiling function is? with type Equation(Expression(Integer)) -> Boolean
Type: Boolean
fricas RR:=tensor(-R,
Type: Matrix(Expression(Integer))
fricas SS:=map(Simplify,
Type: Matrix(Expression(Integer))
fricas Is?(SS*SS=SS) fricas Compiling function Is? with type Equation(Matrix(Expression(Integer) )) -> Boolean
Type: Boolean
fricas trace(SS)
Type: Expression(Integer)
fricas TT:=map(Simplify, Type: Matrix(Expression(Integer))
fricas Is?(SS*TT*SS = dot(S,
Type: Boolean
fricas UU:=map(Simplify,
Type: Matrix(Expression(Integer))
fricas VV:=map(Simplify, Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
fricas WW:=map(Simplify, Type: Matrix(Expression(Integer))
fricas Is?(SS*TT*WW = -dot(S,
Type: Boolean
fricas Is?(SS*TT*SS = dot(S,
Type: Boolean
Nilpotent Operators fricas AA:=tensor(-A,
Type: Matrix(Expression(Integer))
fricas BB:=tensor(-B, Type: Matrix(Expression(Integer))
fricas CC:=tensor(-C, Type: Matrix(Expression(Integer))
fricas Is?(AA*AA=0*AA)
Type: Boolean
fricas trace(AA)
Type: Expression(Integer)
fricas is?(trace(AA*BB)=dot(A,
Type: Boolean
fricas dot(A,
Type: Expression(Integer)
fricas possible(%)::Complex Float fricas Compiling function possible with type Expression(Integer) -> Expression(Integer)
Type: Complex(Float)
fricas Is?(AA*BB*CC = -dot(A,
Type: Boolean
fricas Is?(AA*BB*SS = -dot(A,
Type: Boolean
fricas Is?(AA*BB*SS=SS*AA*BB)
Type: Boolean
fricas Is?(AA*BB*AA = dot(A,
Type: Boolean
Lie Bracket fricas STW:=(SS*TT-TT*SS)*WW; Type: Matrix(Expression(Integer))
fricas Is?(STW*STW=0*STW)
Type: Boolean
fricas trace(STW)
Type: Expression(Integer)
fricas solve(map(x+->x=0,
Type: List(List(Equation(Expression(Integer))))
fricas ABC:=(AA*BB-BB*AA)*CC; Type: Matrix(Expression(Integer))
fricas Is?(ABC*ABC=0*ABC)
Type: Boolean
fricas trace(ABC)
Type: Expression(Integer)
fricas PQR:=(PP*QQ-PP*QQ)*tensor(-vect([r0, Type: Matrix(Expression(Integer))
fricas Is?(PQR*PQR=0*PQR)
Type: Boolean
fricas trace(PQR)
Type: NonNegativeInteger?
fricas map(Simplify,
Type: Matrix(Expression(Integer))
fricas trace((PP*QQ-QQ*PP))
Type: Expression(Integer)
Unit fricas -(PP*QQ+QQ*PP)+PP+QQ; Type: Matrix(Expression(Integer))
fricas 2/trace(%)*%; Type: Matrix(Expression(Integer))
fricas trace %
Type: Expression(Integer)
fricas n:=map(Simplify, Type: Matrix(Expression(Integer))
fricas Is?(n = (SS-TT)*(SS-TT) )
Type: Boolean
fricas N:=map(Simplify, Type: Matrix(Expression(Integer))
fricas Simplify trace N
Type: Expression(Integer)
fricas Is?(N*N=N)
Type: Boolean
fricas Is?(SS*N=SS)
Type: Boolean
fricas Is?(TT*N=TT)
Type: Boolean
fricas Is?(N*SS=SS)
Type: Boolean
fricas Is?(N*TT=TT)
Type: Boolean
fricas -(PP*RR+RR*PP)+PP+RR; Type: Matrix(Expression(Integer))
fricas 2/trace(%)*%
Type: Matrix(Expression(Integer))
fricas -(SS*RR+RR*SS)+SS+RR; Type: Matrix(Expression(Integer))
fricas 2/trace(%)*%
Type: Matrix(Expression(Integer))
fricas -(UU*RR+RR*UU)+UU+RR; Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
fricas -(UU*VV+VV*UU)+UU+VV; Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
Momentum fricas m:=map(x+->factor(numer x)/factor(denom x),
Type: Matrix(Fraction(Factored(SparseMultivariatePolynomial?(Integer,
fricas Is?(m = tensor(-(P+Q),
Type: Boolean
fricas factor trace m
Type: Factored(SparseMultivariatePolynomial?(Integer,
fricas M:=1/trace(m)*m::Matrix Scalar; Type: Matrix(Expression(Integer))
fricas trace M
Type: Expression(Integer)
fricas Is?(M*M=M)
Type: Boolean
fricas (PP*RR+RR*PP)/dot(P, Type: Matrix(Expression(Integer))
fricas 1/trace(%)*%
Type: Matrix(Expression(Integer))
fricas trace %
Type: Expression(Integer)
fricas --(SS*RR+RR*SS)/dot(S, Type: Matrix(Expression(Integer))
fricas map(Simplify,
Type: Matrix(Expression(Integer))
Unit for 3 Observers fricas P:=1/sqrt(1-p1^2-p2^2-p3^2)*vect [1,
Type: Matrix(Expression(Integer))
fricas PP:=tensor(-P,
Type: Matrix(Expression(Integer))
fricas Q:=1/sqrt(1-q1^2-q2^2-q3^2)*vect [1,
Type: Matrix(Expression(Integer))
fricas QQ:=tensor(-Q,
Type: Matrix(Expression(Integer))
fricas R:=1/sqrt(1-r1^2-r2^2-r3^2)*vect [1,
Type: Matrix(Expression(Integer))
fricas RR:=tensor(-R,
Type: Matrix(Expression(Integer))
fricas gamma(p, Type: Void
fricas -- Silberstein f0 := - determinant(matrix [[1, fricas Compiling function gamma with type (Matrix(Expression(Integer)),
Type: Expression(Integer)
fricas f:=gamma(P,
Type: Expression(Integer)
fricas test(f0 = f)
Type: Boolean
fricas -- nf:=map(Simplify, Type: Matrix(Expression(Integer))
fricas N := 1/f*nf; Type: Matrix(Expression(Integer))
fricas --N:=map(Simplify,
Type: Expression(Integer)
fricas Is?(N*N=N)
Type: Boolean
fricas map(possible,
Type: Matrix(Expression(Integer))
fricas Is?(PP*N=PP)
Type: Boolean
fricas Is?(QQ*N=QQ)
Type: Boolean
fricas Is?(RR*N=RR)
Type: Boolean
fricas Is?(N*PP=PP)
Type: Boolean
fricas Is?(N*QQ=QQ)
Type: Boolean
fricas Is?(N*RR=RR)
Type: Boolean
Orthogonal Observers fricas PP' := N - (1/trace(PP))*PP
Type: Matrix(Expression(Integer))
fricas Is?(PP'*PP' = PP')
Type: Boolean
fricas trace PP'
Type: Expression(Integer)
fricas Is?(PP'*PP = 0*PP)
Type: Boolean
fricas -- derivation Is?(PP'*(QQ*RR) = (PP'*QQ)*RR + QQ*(PP'*RR))
Type: Boolean
|