Special relativity without Lorentz transformations.Here are some sample computations based on papers by Z. Oziewicz
and the book by T. Matolcsi See also the slides: SandBoxRelativeVelocity (presented at IARD 2006). Mathematical PreliminariesA vector is represented as a nx1 matrix (column vector) axiom vect(x:List Expression Integer):Matrix Expression Integer == matrix map(y+->[y],x) Type: Void axiom vect [a1,a2,a3] axiom Compiling function vect with type List(Expression(Integer)) ->
Matrix(Expression(Integer))
Type: Matrix(Expression(Integer)) Then a row vector is axiom transpose(vect [a1,a2,a3])
Type: Matrix(Expression(Integer)) Inner product is axiom transpose(vect [a1,a2,a3])*vect [b1,b2,b3]
Type: Matrix(Expression(Integer)) and tensor product is axiom vect [a1,a2,a3]*transpose(vect [b1,b2,b3])
Type: Matrix(Expression(Integer)) Applying the Lorentz form produces a row vector axiom g(x)==transpose(x)*diagonalMatrix [-1,1,1,1] Type: Void or a scalar axiom g(x,y)== (transpose(x)*diagonalMatrix([-1,1,1,1])*y)::EXPR INT Type: Void For difficult verifications it is sometimes convenient to replace symbols by random numerical values. axiom possible(x)==subst(x, map(y+->(y=(random(100) - random(100))),variables x) ) Type: Void axiom Is?(eq:Equation EXPR INT):Boolean == (lhs(eq)-rhs(eq)=0)::Boolean Type: Void axiom Is2?(eq:Equation(Matrix(EXPR(INT)))):Boolean == _ ( (lhs(eq)-rhs(eq)) :: Matrix Expression AlgebraicNumber = _ zero(nrows(lhs(eq)),ncols(lhs(eq)))$Matrix Expression AlgebraicNumber )::Boolean Type: Void The AlgebraicNumber domain can test for numerical equality of complicated
expressions involving axiom IsPossible?(eq:Equation EXPR INT):Boolean == _ (possible(lhs(eq)-rhs(eq)) :: Expression AlgebraicNumber=0)::Boolean Type: Void axiom IsPossible2?(eq:Equation(Matrix(EXPR(INT)))):Boolean == _ ( map(possible,(lhs(eq)-rhs(eq))) :: Matrix Expression AlgebraicNumber = _ zero(nrows(lhs(eq)),ncols(lhs(eq)))$Matrix Expression AlgebraicNumber )::Boolean Type: Void Massive ObjectsAn object (also referred to as an obserser) is represented by a time-like 4-vector axiom P:=vect [sqrt(p1^2+p2^2+p3^2+1),p1,p2,p3]; Type: Matrix(Expression(Integer)) axiom g(P,P) axiom Compiling function g with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Expression(Integer)
Type: Expression(Integer) axiom Q:=vect [sqrt(q1^2+q2^2+q3^2+1),q1,q2,q3]; Type: Matrix(Expression(Integer)) axiom g(Q,Q)
Type: Expression(Integer) Associated with each such vector is the orthogonal 3-d Euclidean subspace
Relative VelocityAn object Q has a unique relative velocity w(P,Q) with respect to object P given by axiom w(P,Q)==-Q/g(P,Q)-P Type: Void Lorentz factor axiom gamma(v)==1/sqrt(1-g(v,v)) Type: Void Binary Boost axiom b(P,v)==gamma(v)*(P+v) Type: Void Observer P measures velocity u. u is space-like and in axiom u:=w(P,Q); axiom Compiling function w with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer))Type: Matrix(Expression(Integer)) axiom g(P,u)
Type: Expression(Integer) axiom possible(g(u,u))::EXPR Float axiom Compiling function possible with type Expression(Integer) ->
Expression(Integer)
Type: Expression(Float) axiom IsPossible?(gamma(u)=-g(P,Q)) axiom Compiling function gamma with type Matrix(Expression(Integer)) ->
Expression(Integer)axiom Compiling function IsPossible? with type Equation(Expression(Integer
)) -> Boolean
Type: Boolean u is velocity of object Q axiom IsPossible?(g(Q,u)=gamma(u)-1/gamma(u))
Type: Boolean Observer Q is u-boost of P axiom IsPossible2?(Q=b(P,u)) axiom Compiling function b with type (Matrix(Expression(Integer)),Matrix(
Expression(Integer))) -> Matrix(Expression(Integer))axiom Compiling function IsPossible2? with type Equation(Matrix(Expression
(Integer))) -> Boolean
Type: Boolean Inverse velocity is measured by Q axiom u' := w(Q,P); Type: Matrix(Expression(Integer)) axiom g(Q,u')
Type: Expression(Integer) Inverse velocity is not reciprocal axiom IsPossible2?(-u=u')
Type: Boolean Object P is u'-boost of Q axiom IsPossible2?(P=b(Q,u'))
Type: Boolean Objects P and Q are completely determined by velocities u and u' axiom IsPossible2?(P = -1/g(u,u)*(u+u'/gamma(u)))
Type: Boolean axiom IsPossible2?(Q = -1/g(u,u)*(u'+u/gamma(u)))
Type: Boolean The magnitude of the inverse velocity is the same as the velocity axiom IsPossible?(g(u,u)=g(u',u'))
Type: Boolean Collinear VelocitiesSuppose the velocity v of some object L is collinear with reciprocal velocity u': axiom v := alpha*u'; Type: Matrix(Expression(Integer)) axiom L := b(Q,v); Type: Matrix(Expression(Integer)) axiom Is2?(v=w(Q,L)) axiom Compiling function Is2? with type Equation(Matrix(Expression(Integer
))) -> Boolean
Type: Boolean Composition of collinear velocitiesFor velocity v collinear with reciprocal velocity u' we have Matolcsi (4.3.3) axiom Is2?(w(P,L)=(u-alpha*u)/(1-alpha*g(u,u)))
Type: Boolean General addition of relative velocities (Oziewicz) axiom addition(v,u,u') == ( u + v/gamma(u) - g(v,u')/g(u,u)*(u + u'/gamma(u)) ) / (1-g(v,u')) Type: Void axiom Is2?(w(P,L)=addition(v,u,u')) axiom Compiling function addition with type (Matrix(Expression(Integer)),
Matrix(Expression(Integer)),Matrix(Expression(Integer))) ->
Matrix(Expression(Integer))
Type: Boolean axiom IsPossible2?(w(P,L)=addition(w(Q,L),w(P,Q),w(Q,P)))
Type: Boolean AssociativityUnlike Einstein addition of velocities, addition of relative velocities is associative:
axiom R:=vect [sqrt(r1^2+r2^2+r3^2+1),r1,r2,r3]; Type: Matrix(Expression(Integer)) axiom g(R,R)
Type: Expression(Integer) axiom S:=vect [sqrt(s1^2+s2^2+s3^2+1),s1,s2,s3]; Type: Matrix(Expression(Integer)) axiom g(S,S)
Type: Expression(Integer) Unfortunately Axiom is not able to evaluate all of these in a reasonable amount of time (within the 1 minute wiki limit). axiom --IsPossible2?(w(P,R)=addition(w(Q,R),w(P,Q),w(Q,P))) --IsPossible2?(w(R,P)=addition(w(Q,P),w(R,Q),w(Q,R))) IsPossible2?(w(Q,S)=addition(w(R,S),w(Q,R),w(R,Q)))
Type: Boolean axiom --IsPossible2?(w(P,S)=addition(w(Q,S),w(P,Q),w(Q,P))) --IsPossible2?(w(P,S)=addition(w(R,S),w(P,R),w(R,P))) 0
Type: NonNegativeInteger |

![\digraph[scale=0.75]{CategoricalRelativity2}{rankdir=LR; P->Q [label="u"];
Q->R [label="v"]; R->S [label="w"]; P->R [label="v + u"]; Q->S [label="w + v"];
P->S [label="(w+v)+u=w+(v+u)"]; }
\digraph[scale=0.75]{CategoricalRelativity2}{rankdir=LR; P->Q [label="u"];
Q->R [label="v"]; R->S [label="w"]; P->R [label="v + u"]; Q->S [label="w + v"];
P->S [label="(w+v)+u=w+(v+u)"]; }](images/2220201583920870798-16.0px.png)