Intelligent Internet · 2026 April · Foundations · Symmetry · Spacetime

One Postulate. Einstein needed only one — not two.

The relativity principle alone forces a finite invariant speed, a Lorentzian spacetime, and the unification of space and time. The second postulate was calibration dressed up as foundation. The tools to prove it existed in 1888.

Try one question
Abstract

Einstein built special relativity on two postulates. No experiment can distinguish one constant-velocity laboratory from another, and light travels at the same speed in every such laboratory. The first is a principle of symmetry. The second is a fact about a particular phenomenon, an observation imported into the foundations.

We show this was unnecessary. The symmetry principle alone yields a family of possible universes, labelled by a single number \(\kappa\). The Killing form — a diagnostic built into every set of symmetry rules, introduced by Wilhelm Killing in 1888 — sorts them into exactly three kinds: one with no causality, one that cannot unify space and time, and one that achieves both and demands a finite speed that is the same in all frames. Experiment is needed to measure that speed, not to establish its existence.

Einstein needed one postulate, not two.

IThe postulate

A principle of symmetry, and an empirical concession.

Einstein's first postulate is a design principle. His second imports a fact about light into the foundations of physics — a concession he never quite forgave.

Postulate · Relativity Principle, 1905 The laws of physics take the same form in all inertial frames.

An inertial frame is any laboratory moving at constant velocity, a sealed room drifting through space. The postulate says that no experiment performed inside such a room can reveal how fast it is moving, or whether it is moving at all.

For Einstein this was more than a statement about experiments. It was a design principle. The mathematical framework of physics should contain no structure put in by hand. Everything should emerge from the rules themselves.

Special relativity came from removing the assumption that all observers agree on which events are simultaneous. General relativity came from removing the assumption that there is a single natural way to label points in spacetime. Each advance stripped away a background assumption that the previous framework had smuggled in.

The second postulate is different in character. It says that light travels at a finite speed \(c\) that is the same in all inertial frames. This is not a principle of symmetry. It is an observation about a particular physical phenomenon, imported into the foundations.

For Einstein, who held that the laws of physics should be self-contained, this was a concession — an empirical fact doing the work of a structural argument.

IIWhat it determines

A family of universes, indexed by a single number \(\kappa\).

Since 1910, derivation after derivation has shown that the relativity principle alone allows exactly one family of inertial-frame transformations, parameterised by \(\kappa\). Three signs, three universes.

How do measurements in one inertial frame relate to those in another? If you are on a train moving at speed \(v\) relative to the platform, the relativity principle — homogeneity, isotropy, consistent composition — turns out to be extraordinarily restrictive.3,6,7,5 These properties allow exactly one family of transformation rules, governed by a single undetermined number \(\kappa\).

The transformation has two effects. The platform sees your position shifted by the train's motion — intuitive enough. The deeper effect is a term proportional to \(\kappa\, v\, x\) that mixes space into time: what counts as "now" depends on where you are, and \(\kappa\) controls the strength of this mixing. As \(v\) approaches \(1/\sqrt{\kappa}\) (when \(\kappa > 0\)), the time-dilation factor diverges. A speed limit appears. When \(\kappa = 0\), the mixing vanishes; time is absolute and we recover Newton.

κ > 0 · Lorentzian

Einstein's universe.

𝔰𝔬(3,1)

A finite maximum speed. Lightcones separate events that can influence each other from those that cannot. Causal structure exists.

κ = 0 · Galilean

Newton's universe.

𝔦𝔰𝔬(3)

Time is universal — every observer agrees on "now" — and there is no speed limit. Space and time live independently, and never combine.

κ < 0 · Euclidean

A flat impossibility.

𝔰𝔬(4)

All four dimensions equivalent. No lightcone, no past, no future. Change your velocity far enough and you loop back to rest.

"Nothing can naturally be said about the sign, magnitude and physical meaning of κ."

— Wolfgang Pauli, Theory of Relativity, 1921

We disagree. The symmetry rules already contain the answer.

IIISelf-examination

Can the rules examine themselves?

Wilhelm Killing found a way in 1888 — seventeen years before Einstein. The Killing form is a single number, computed entirely from the algebra's combination rules. It is the algebra examining itself.

Every set of symmetry rules is built from elementary operations called generators. For the symmetry of motion there are six: three rotations \(J_1, J_2, J_3\), and three boosts \(K_1, K_2, K_3\). A rotation relates your laboratory to one pointing a different way. A boost relates it to one moving past you.

Rotations don't commute. Whether the boosts share that property depends on \(\kappa\).

When \(\kappa = 0\), boosts commute and the link to rotation is severed. The Killing form is the algebra's own diagnostic of how much each generator reshuffles the others:

Killing form \[ B(X, Y) = \mathrm{tr}\big(\mathrm{ad}_X \circ \mathrm{ad}_Y\big). \]

Tracking how each generator reshuffles the other five and summing yields a diagonal matrix. The rotations always register \(-4\). The boosts register \(4\kappa\) — and their value depends entirely on \(\kappa\).

\[ B \;=\; \mathrm{diag}\big(\underbrace{-4,\,-4,\,-4}_{\text{rotations}},\;\; \underbrace{4\kappa,\;4\kappa,\;4\kappa}_{\text{boosts}}\big). \]

When the Killing form returns a non-zero value, the algebra "sees" that generator and can build geometry from it. When it returns zero, the algebra is blind in that direction.

The sign carries further information. Negative values mean periodic, compact transformations (cosine-like, returning to start). Positive values mean non-compact ones (hyperbolic, growing without bound). The value \(4\kappa\) on the boosts now sorts the three universes — by itself, with no appeal to experiment.

The diagnostic, in one diagram.

Rotations are always non-degenerate. The boosts are non-degenerate when \(\kappa > 0\), vanish when \(\kappa = 0\), and flip periodic when \(\kappa < 0\). The fate of physical reality reads off the diagonal.

IVThree verdicts

The algebra delivers its own verdict — three times.

Two cases fail. Only one survives the postulate's own demand that the laws be the same in every frame.

κ < 0 Verdict — fails

No causal structure.

When \(\kappa\) is negative, the Killing form is non-zero on both rotations and boosts. The algebra has no blind spots. But the sign on the boosts is now negative — the same sign as on rotations. Both are periodic. Both generate closed orbits.

The algebra cannot distinguish which generators are rotations and which are boosts. Without that distinction, it cannot define velocity, and the boosts have no physical interpretation as changes of velocity. There is no past, no future. The case is uninhabitable.

κ = 0 Verdict — incomplete

The algebra goes blind.

When \(\kappa = 0\), the Killing form returns zero on every boost generator. The self-test comes back blank for exactly the operations the relativity postulate is about — the boosts that connect one inertial frame to another.

"The same laws in all frames" can be read in two ways: same form, or same content. The Galilean algebra preserves form but not content. Two observers can adopt different ratios of space units to time units and both satisfy every bracket relation. They agree that \(F = ma\). They disagree on what a metre is worth relative to a second.

That is not the same laws. It is the same template filled in differently. The shape of velocity space is fixed; its scale is missing. Newton's framework requires absolute time and absolute space, supplied from outside. That external scaffolding is exactly what the relativity postulate forbids.

κ > 0

The Killing form fixes the radius. A definite invariant speed exists.

κ = 0

Spherically symmetric, but every circle is equally valid. The ruler is missing.

κ > 0 Verdict — survives

Everything is determined.

When \(\kappa\) is positive, the Killing form returns \(-4\) on the rotations and \(4\kappa\) on the boosts. Every generator is visible. No direction is blind.

Velocity space acquires a definite geometry, with a fixed ruler. The invariant speed \(V = 1/\sqrt{\kappa}\) is finite, real, and the same in all frames. Spacetime acquires its own definite geometry: no observer's time is privileged, and the only quantity all observers agree on is the spacetime interval — a single number that combines space and time inseparably.

Minkowski metric \[ ds^2 = c^2\,dt^2 - dx^2 - dy^2 - dz^2, \qquad \kappa = 1/c^2. \]

That is what unification means. The only invariant quantity mixes both. This geometry has lightcones. Past and future are distinguished. Causal structure exists. The symmetry rules determine every structural feature. Nothing is left free except the numerical scale.

Diagnostic κ < 0 κ = 0 κ > 0
Killing form on boosts \(4\kappa < 0\) \(0\) \(4\kappa > 0\)
Invariant speed \(V = 1/\sqrt{\kappa}\) imaginary undefined finite, real
Spacetime metric Euclidean \(dt^2\) only Lorentzian
Causal structure none none lightcones
Space–time unification all alike impossible complete
Background structure needed none yes (time, spatial metric) none
VInteractive lab

Turn the κ-dial. Slide the velocity. Watch the geometry.

Two experiments, no physics degree required. The numbers below are not pre-baked animations — they are computed live from the same algebra the paper derives.

Experiment 1

The κ-dial.

Pick a value of κ. Each choice produces a completely different geometry of spacetime. Two of them fail; one survives the postulate.

Experiment 2

The Lorentz explorer.

With κ > 0 fixed, slide the velocity. The Minkowski axes tilt toward the lightcone. Time dilates. Lengths contract. Every number below is \(\gamma = 1/\sqrt{1 - v^2}\) at work.

Rest frame
1.0000 ×
unchanged ruler · steady clock
Moving frame
0.8660 ×
contracted ruler · dilated clock
γ-factor
1.1547
Axis tilt
26.6°
Experiment 3

The composition law — and why nothing exceeds c.

Two boosts compose into one. The relativity principle alone forces the composition law, \(v_1 \oplus v_2 = (v_1 + v_2)/(1 + \kappa\, v_1 v_2)\). When \(\kappa = 0\) this is ordinary addition. When \(\kappa > 0\) the denominator caps the sum at \(1/\sqrt{\kappa} = c\). Slide both speeds past 0.9c and watch — Newton's answer is wrong by exactly the amount the algebra predicts.

Newton (κ = 0)
v1 + v2
1.6000
→ exceeds c — impossible
Einstein (κ = 1/c²)
(v1 + v2) / (1 + v1v2/c²)
0.9756
→ stays sub-luminal · always
Discrepancy
| Newton − Einstein | / c
0.6244
→ what experiment falsifies in Newton

Note. The cap at \(c\) is not enforced from outside — it is what the relativity principle's own composition law does on its own. Try \(v_1 = v_2 = 0.99\). Newton says 1.98c. The algebra says 0.999949c. Experiment confirms the algebra.

Every slider you moved is a consequence of a single algebraic fact: the Killing form demands κ > 0. Light plays no special role in the derivation. Its speed is simply the value experiment assigns to \(V = 1/\sqrt{\kappa}\).

VIThe proof, executable

The algebra computes itself.
Watch — or run it yourself.

Below: the Killing-form computation animated cell-by-cell, then the same proof as a SymPy notebook embedded in the page. Click Run on any cell and a full Python interpreter loads in your browser to verify the result, end to end.

The Killing form, in six steps.

Press Compute. Each diagonal cell will fill in turn — the trace of \(\mathrm{ad}_X \circ \mathrm{ad}_X\) for each generator — followed by the off-diagonals, which all vanish by symmetry.

The result reads: rotations \(J_i\) register \(-4\) apiece, boosts \(K_i\) register \(4\kappa\). The whole physical question reduces to the sign of one number.

Idle. Click Compute B to begin.
NotebookSeven cells, end to end

From brackets to Minkowski, in your browser.

Seven SymPy cells reproduce the paper's argument exactly. Cells 1–2 build the algebra. Cell 3 computes the Killing form symbolically and finds it diagonal. Cell 4 substitutes the three values of κ and reads off the eigenvalue signatures — the three verdicts. Cell 5 solves \(V \oplus V = V\) for the invariant speed without ever assuming light has a special role. Cell 6 forces the metric out of pure boost-invariance, recovering Minkowski. Cell 7 closes with the empirical bridge \(\kappa = 1/c^2\).

Every cell is editable. Change a sign, swap a generator, supply a different \(\kappa\) — the proof updates with you. The Pyodide runtime (~10 MB) loads once on first Run and is cached thereafter.

SymPy interpreter — sympy via Pyodide. Idle. Click any Run button to load Python in your browser (~10 MB, one-time).
Press to execute the full proof spine sequentially.
Cell 01 · Setup

The six generators and their brackets.

We declare \(\kappa\) symbolic, define the bracket function \([\,\cdot\,,\,\cdot\,]\) in a six-dimensional basis ordered \((J_1, J_2, J_3, K_1, K_2, K_3)\), and verify the antisymmetry \([X, Y] = -[Y, X]\) on the boost sector.

python · sympy
from sympy import symbols, Matrix, zeros, simplify, factor, latex, LeviCivita
reset_outputs()

# A single symbolic parameter labels the family of universes.
kappa = symbols('kappa', real=True)

# Basis order: e0..e2 = J1..J3 (rotations); e3..e5 = K1..K3 (boosts).
def is_J(i): return i < 3
def comp(i): return i % 3

def bracket(i, j):
    """Return [e_i, e_j] expressed as a 6-vector."""
    out = [0] * 6
    a, b = comp(i), comp(j)
    if is_J(i) and is_J(j):
        for c in range(3): out[c] = LeviCivita(a, b, c)
    elif is_J(i) and not is_J(j):
        for c in range(3): out[3+c] = LeviCivita(a, b, c)
    elif not is_J(i) and is_J(j):
        for c in range(3): out[3+c] = -LeviCivita(b, a, c)
    else:
        for c in range(3): out[c]   = -kappa * LeviCivita(a, b, c)
    return Matrix(out)

# Spot-check: verify the three classes of brackets.
show("[J1, J2]", bracket(0, 1).T)   # expect e3 (= J3)
show("[J1, K2]", bracket(0, 4).T)   # expect e6 (= K3)
show("[K1, K2]", bracket(3, 4).T)   # expect -kappa * J3
Cell 02 · The adjoint representation

Each generator as a 6 × 6 reshuffler.

The map \(\mathrm{ad}_X : Y \mapsto [X, Y]\) is linear, so it has a matrix. Its \(j\)-th column is just \([X, e_j]\). The κ enters explicitly in the boost-on-boost columns.

python · sympy
reset_outputs()

def ad(i):
    """Adjoint matrix of generator e_i: column j is [e_i, e_j]."""
    cols = [bracket(i, j) for j in range(6)]
    return Matrix.hstack(*cols)

# Show the most interesting one: ad_{K1} contains kappa.
show("ad(J1)  — pure rotation", ad(0))
show("ad(K1)  — boost, contains κ", ad(3))
Cell 03 · The Killing form

\(B(X,Y) = \mathrm{tr}(\mathrm{ad}_X\circ \mathrm{ad}_Y)\).

Loop over all 36 pairs, multiply the adjoint matrices, take the trace. SymPy will simplify the result and reveal the diagonal structure predicted by the paper.

python · sympy
reset_outputs()

B = zeros(6, 6)
for i in range(6):
    for j in range(6):
        B[i, j] = (ad(i) * ad(j)).trace()
B = B.applyfunc(simplify)

show("Killing form B = tr(ad_X · ad_Y)", B)
show("Diagonal entries", Matrix([B[i, i] for i in range(6)]).T)
show("Non-degenerate ⇔ det(B) ≠ 0", factor(B.det()))
Cell 04 · The three verdicts

Substitute κ. Read off the signature.

With \(B\) in hand, the three universes are now a one-line substitution each. The sign of the eigenvalues is the verdict.

python · sympy
reset_outputs()

def signature(M):
    """(positive, zero, negative) eigenvalue counts of a real symmetric matrix."""
    eigs = M.eigenvals()
    pos = sum(m for e, m in eigs.items() if e > 0)
    zer = sum(m for e, m in eigs.items() if e == 0)
    neg = sum(m for e, m in eigs.items() if e < 0)
    return (int(pos), int(zer), int(neg))

B_neg = B.subs(kappa, -1)   # Euclidean
B_zer = B.subs(kappa,  0)   # Galilean
B_pos = B.subs(kappa,  1)   # Lorentzian

show("κ < 0  signature (+, 0, −)", Matrix([signature(B_neg)]))
show("κ = 0  signature (+, 0, −)", Matrix([signature(B_zer)]))
show("κ > 0  signature (+, 0, −)", Matrix([signature(B_pos)]))
show("Boost sub-block at κ=0 (rank ↓)", B_zer[3:, 3:])
Cell 05 · The invariant speed

\(V = 1/\sqrt{\kappa}\) — emergent, not imported.

Compose two boosts via \(v_1 \oplus v_2 = (v_1 + v_2)/(1 + \kappa\, v_1 v_2)\) and look for the fixed point \(V\) such that \(V \oplus V = V\). SymPy solves it symbolically — no input of the speed of light required.

python · sympy
from sympy import Symbol, solve, sqrt, simplify, Eq
reset_outputs()

v1, v2 = symbols('v1 v2', real=True)
V      = symbols('V', positive=True)

# Velocity addition forced by the boost family.
add = (v1 + v2) / (1 + kappa * v1 * v2)
show("v1 ⊕ v2", add)

# A speed V is invariant iff V ⊕ V = V.
sol = solve(Eq(add.subs({v1: V, v2: V}), V), V)
show("Solutions of V ⊕ V = V", Matrix(sol))

# Compare with the algebra's own claim.
show("Predicted invariant speed", 1/sqrt(kappa))
Cell 06 · The spacetime metric

Minkowski emerges, by boost-invariance alone.

Add translations \(H, P_1, P_2, P_3\) to the algebra. By Schur's lemma the unique rotation-invariant bilinear form on this 4-vector is \(q = \mathrm{diag}(A,\, B,\, B,\, B)\). We now demand boost invariance — \(q(K_i v, w) + q(v, K_i w) = 0\) — and let SymPy solve for the constraint on \(B\). The answer is the same metric that took Einstein an empirical postulate to obtain.

python · sympy
from sympy import symbols, Matrix, solve, eye, simplify, diag
reset_outputs()

# Translations form a 4-vector V = span{H, P1, P2, P3}.
# [K_i, H] = P_i and [K_i, P_j] = κ δ_ij H, by Jacobi.
# A boost K_1 acts on V as the matrix:
#   H  → P_1,   P_1 → κ H,   P_2,P_3 untouched.
A_, B_ = symbols('A B', real=True)
K1 = Matrix([
    [0,     kappa, 0, 0],
    [1,     0,     0, 0],
    [0,     0,     0, 0],
    [0,     0,     0, 0],
])

# Rotational invariance fixes q to be diagonal: diag(A, B, B, B).
q = diag(A_, B_, B_, B_)
show("Ansatz q from rotation-invariance", q)

# Boost invariance condition:  K1ᵀ·q + q·K1 = 0.
inv_cond = simplify(K1.T * q + q * K1)
show("Invariance condition K₁ᵀq + qK₁", inv_cond)

# Read off the constraint and solve for B.
B_sol = solve(inv_cond[0, 1], B_)[0]
show("Boost invariance forces B =", B_sol)

# Substitute back: the metric, fixed up to overall scale A.
q_final = q.subs(B_, B_sol).subs(A_, 1)
show("q with A=1 (the Minkowski metric)", q_final)

# Verdicts at κ=1 (Lorentzian) and κ=0 (Galilean):
show("  κ=1 → diagonal entries",
     Matrix([[q_final.subs(kappa, 1)[i, i] for i in range(4)]]))
show("  κ=0 → metric collapses to dt² alone",
     q_final.subs(kappa, 0))
Cell 07 · Calibration

The empirical bridge — κ = 1/c².

Everything above is structural: the algebra knows the shape, but not the size. To turn the framework into a theory we identify the algebra's invariant speed with the measured speed of light. That is the only role experiment plays. SymPy verifies the substitution.

python · sympy
from sympy import symbols, sqrt, simplify
reset_outputs()

# Empirical input: identify the algebra's invariant speed with c.
c = symbols('c', positive=True, real=True)

kappa_calibrated = 1 / c**2
calibrated_speed = simplify(1 / sqrt(kappa_calibrated))

show("κ after calibration", kappa_calibrated)
show("V = 1/√κ",           calibrated_speed)
show("V − c (must vanish)", simplify(calibrated_speed - c))

# And the Minkowski metric, calibrated:
from sympy import diag
g_phys = diag(1, -kappa_calibrated, -kappa_calibrated, -kappa_calibrated) * c**2
show("Calibrated metric  c² · diag(1, −κ, −κ, −κ)", g_phys)

Seven cells, one κ. The Killing form is diagonal, the boost block carries \(4\kappa\), the only positive case yields a finite invariant speed, boost-invariance alone forces the Minkowski metric, and the substitution \(\kappa = 1/c^2\) does the only job experiment ever had to do. The algebra has examined itself, and Einstein was right after all — with one postulate to spare.

VIIStructure and scale

The speed's value is empirical.
Its existence is not.

A finite invariant speed must exist, and spacetime must be Lorentzian. What the argument doesn't determine is the numerical value of that speed. Measuring \(c \approx 3 \times 10^8\) m/s fixes \(\kappa = 1/c^2\). But this is calibration — fitting a number to a framework whose architecture is already determined.

Einstein's second postulate was calibration dressed up as foundation. The symmetry rules themselves demand a finite invariant speed. Experiment tells us how fast. The algebra tells us that.

Einstein needed one postulate, not two.

The tools to finish the job existed in his time. Killing's diagnostic, published in 1888, was already on the shelf. The conclusion he reached empirically — finite invariant speed, Lorentzian spacetime, unified space and time — follows from the relativity principle alone.

VIIIReferences

Sources & antecedents.

Eleven works tracing the argument from Einstein and Killing to the modern derivations of the boost family.

  1. 01 A. Einstein, "Zur Elektrodynamik bewegter Körper," Ann. Phys. 17, 891 (1905).
  2. 02 W. Killing, "Die Zusammensetzung der stetigen endlichen Transformationsgruppen," Math. Ann. 31, 252 (1888).
  3. 03 W. von Ignatowski, "Einige allgemeine Bemerkungen über das Relativitätsprinzip," Phys. Z. 11, 972 (1910).
  4. 04 W. Pauli, Theory of Relativity, Teubner, Leipzig (1921); English transl. Pergamon (1958).
  5. 05 H. Bacry and J.-M. Lévy-Leblond, "Possible kinematics," J. Math. Phys. 9, 1605 (1968).
  6. 06 V. Berzi and V. Gorini, "Reciprocity principle and the Lorentz transformations," J. Math. Phys. 10, 1518 (1969).
  7. 07 J.-M. Lévy-Leblond, "One more derivation of the Lorentz transformation," Am. J. Phys. 44, 271 (1976).
  8. 08 N. D. Mermin, "Relativity without light," Am. J. Phys. 52, 119 (1984).
  9. 09 P. B. Pal, "Nothing but relativity," Eur. J. Phys. 24, 315 (2003).
  10. 10 Z. K. Silagadze, "Relativity without tears," Acta Phys. Pol. B 39, 811 (2008).
  11. 11 A. Drory, "The necessity of the second postulate in special relativity," Stud. Hist. Phil. Mod. Phys. 51, 57 (2015).