Self-contained proof
The periodic table in 4 steps
From "s = 1/2" to 2, 8, 8, 18, 18, 32, 32 with no parameter.
This page contains a compact demonstration: four algebraic steps leading from Pauli's principle to the exact capacities of the s/p/d/f blocks, then to the periods of the Mendeleev table. The associated Python code is executable and testable.
For the full visual version (polygons, d⁵/d¹⁰ anomalies, Z → block calculator), see the main page Periodic table. This page is dedicated to the formal demonstration.
Demonstration
Four steps, zero parameter
- 1
Pauli ⇒ two states per orbit
The {1 ↔ 2} involution forbids identical fermions from sharing an orbit.
A direct consequence of T1 (mod-3 forbidden transitions) read on the binary channel p = 2. Each magnetic-quantum-number m_ℓ orbit hosts at most two occupants (spin ↑ and spin ↓). No parameter, no ansatz.
→ Universal factor 2 across all shells.
- 2
Shell capacity: 2(2ℓ + 1)
The Z/(2p)Z channel carries 2(2ℓ + 1) distinct states.
The orbit ℓ admits (2ℓ + 1) magnetic orientations (C1 reading of the Z/(2ℓ+1)Z polygon). Multiplied by the factor 2 (step 1) gives the capacity.
→ s: 2 · 1 = 2 · p: 2 · 3 = 6 · d: 2 · 5 = 10 · f: 2 · 7 = 14
- 3
Which channels are active?
At μ* = 15, only primes {3, 5, 7} satisfy γ_p > 1/2.
γ_3 = 0.808, γ_5 = 0.696, γ_7 = 0.595, but γ_11 = 0.426 < 1/2. So p = 11 is inactive. No g block (ℓ = 4) because that would need p = 11 to be active.
→ Four blocks total: s (ℓ=0), p (ℓ=1), d (ℓ=2), f (ℓ=3). No fifth.
- 4
Period L(k): forced combinatorics
L(k) = 2⌈k/2⌉² yields 2, 8, 8, 18, 18, 32, 32.
Count the new shells activated each period (Aufbau / Madelung) and sum the capacities. The parity of k yields the closed formula.
→ Reproduces exactly the observed periodic-table periods.
Not exceptions
Anomalies are consequences
Cr, Cu, Mo, Pd, Ag, Au, lanthanides… are not ad-hoc "exceptions". They are informational stabilities forced by the geometry of the channel polygons.
Cr ([Ar] 3d⁵ 4s¹)
Half-filling of the Z/10Z pentagon = informational stability.
Cu ([Ar] 3d¹⁰ 4s¹)
Total closure of the Z/10Z pentagon = maximal stability.
Mo, Pd, Ag, Au
Same mechanisms: half / total closure of the d-polygon.
Lanthanides / actinides
Buried f channel (Z/14Z heptagon): Aufbau goes s → f → d → p.
Reproducibility
Python code: 8 lines to derive everything
The ptc.periodic
module implements the 4 steps in fewer than 100 lines. Canonical usage:
from ptc.periodic import (
period_length, block_for_Z, aufbau_config, capacity_for_l
)
# Step 2: closed capacities
for l, name in [(0, 's'), (1, 'p'), (2, 'd'), (3, 'f')]:
print(f"{name} (ℓ={l}): {capacity_for_l(l)} states")
# Step 4: periods 1 to 7
for k in range(1, 8):
print(f"Period {k}: {period_length(k)} elements")
# Block and configuration from Z
for Z in [1, 6, 26, 47, 92, 118]:
print(f"Z={Z:3d}: block {block_for_Z(Z)} | {aufbau_config(Z)}")
# Expected output (excerpt):
# s (ℓ=0): 2 states
# p (ℓ=1): 6 states
# d (ℓ=2): 10 states
# f (ℓ=3): 14 states
# Period 1: 2 elements
# Period 2: 8 elements
# ...
# Z= 6: block p | 1s² 2s² 2p²
# Z= 26: block d | [Ar] 3d⁶ 4s²
# Z= 47: block d | [Kr] 4d¹⁰ 5s¹ ← half-closure anomaly
# Z= 92: block f | [Rn] 5f³ 6d¹ 7s² Integrity tests
# tests/test_periodic.py
def test_capacities():
assert capacity_for_l(0) == 2
assert capacity_for_l(1) == 6
assert capacity_for_l(2) == 10
assert capacity_for_l(3) == 14
def test_periods():
assert [period_length(k) for k in range(1, 8)] == [2, 8, 8, 18, 18, 32, 32]
def test_no_g_block():
# p=11 inactive at fixed point μ*=15 ⇒ no g block
from ptc.gamma import gamma_p
assert gamma_p(11, mu=15) < 0.5
def test_anomalies():
# Cu = [Ar] 3d¹⁰ 4s¹ (pentagon closure)
assert aufbau_config(29) == "[Ar] 3d¹⁰ 4s¹"
# Au = [Xe] 4f¹⁴ 5d¹⁰ 6s¹ (pentagon closure)
assert aufbau_config(79).endswith("5d¹⁰ 6s¹") Score
Comparison with experiment
Predicted periods
7 / 7
2, 8, 8, 18, 18, 32, 32 — exact
Anomalies explained
~ 12 / 12
Cr, Cu, Mo, Pd, Ag, Au, lanthanides, actinides…
Fit parameters
0
None (zero fits, zero ansatz, zero free coefficients)
Going further
Continue
Full periodic table
Interactive polygons, Z → block calculator, visualised anomalies.
ManipulationHands-on proof
Filling slider: see closures and half-closures live.
Chemistry validationIonisation energies Z = 1–118
The PTC engine reproduces IE to within 0.06 % with no parameter.
Chemistry validationElectron affinities (73 values)
MAE 0.98 %. Halogens vs metals discriminated by pure geometry.
Live scriptsRun the code in browser
Pyodide WASM runs periodic.py directly without installation.
Plain essayWhy the periodic table looks this way
6-minute read, no formulas required.