From Space Quaternion to Particle:
Derrick's Wall, the Two Doors, and a Baryon Computed
Abstract
This note executes, as far as it can honestly be executed today, the construction the series has pointed at since its first page: the transformation of the space quaternion into a particle. The program is stated as three steps and then run. Step one promotes the quaternion phase — the home of matter since Weyl's repair — to a field: at every point of space, a unit quaternion U(x), a point on the three-sphere. A particle is then a knot in this field: a configuration that winds, closes, and cannot be combed flat, its winding number an integer no smooth deformation can change. Step two meets the wall and names it:
1The Question, Stated as a Construction
The series has said from its foundations that matter is
2The Field: Space Wearing a Quaternion at Every Point
Step one of the construction. Take the phase of the space quaternion — the unit-quaternion part, the element of S³ that the state turns through — and let it vary from place to place: a field U(x), assigning to every point of space a unit quaternion. This is the Lanczos–Conway road of the field-equations note ('the state quaternion becomes a field') taken literally, and it is the only promotion the framework needs. Two structural facts make this field a particle factory. First, the target is a sphere: the unit quaternions form the three-dimensional sphere S³. Second, the domain is effectively also a sphere: physical space, with the boundary condition that the field settles to the identity U = +1 far away, wraps up — all of infinity becomes a single point, and space becomes an S³ as well. A configuration of the field is therefore a map from a three-sphere to a three-sphere, and such maps carry an integer that no continuous deformation can change: the number of times the domain wraps the target. In the trade this is π₃(S³) = ℤ; in this series' language it is the statement that windings must close — a map either wraps a whole number of times or it is not a map. The integer is the candidate baryon number. You can slide a knot along a rope; you cannot slide it off a rope with no ends. The configuration this note computes is
U(x) = cos f(r) + sin f(r) · ( x̂ · (i, j, k) )
Read it slowly. At radius r, in the direction of the unit vector x̂, the field is a unit quaternion whose real part is cos f(r) and whose imaginary part points along the spatial direction x̂, translated into the quaternion units — internal axes locked to external directions. The single profile function f(r) carries everything. The boundary conditions f(0) = π, f(∞) = 0 mean: at the core the quaternion is −1 (fully inverted, pure real), far away it is +1 (the identity, pure real), and in between it leans through the imaginary directions — the quills of Figure 1. That passage, from −1 through the imaginary sphere to +1, in every radial direction at once, wraps S³ exactly once: winding number one, a single indivisible knot. The name is not this note's: the tension-medium papers call the radially-combed fall lines of the cosmos '
3The Wall: Derrick's Theorem
Step two. Give the field the obvious energy — the gradient, how fast U varies from point to point — and ask for a stable lump. The answer is a theorem, and the proof fits in two lines. Take any finite-energy configuration and rescale its size by a factor s: U_s(x) = U(x/s). A term in the energy with two derivatives, integrated over three-dimensional space, picks up s³ from the volume and s⁻² from the derivatives:
E₂[U_s] = s · E₂[U]
The gradient energy falls as the lump shrinks — monotonically, without bound, toward zero at zero size. There is no minimum at any finite size; every winding of the space quaternion, left to the gradient alone, implodes to a point. This is
Figure 2. Derrick's wall. Against soliton size s, the gradient energy E₂ scales as s (blue): alone, it slides to zero size — collapse. A quartic stiffness term scales as 1/s (green) and catches the fall. The total (red) has its minimum where the two are equal —
4The Two Doors — and the Two Classes of the Floors Note
41 The lepton door: why it is still empty
Derrick's proof silently assumes the configuration does not move. But this series' particle is never static: it winds in time at the Compton rate, ω_C = mc²/
42 The baryon door: the knot and the quartic
The second escape keeps the configuration static and adds the four-derivative term — Skyrme's move (1961). The energy becomes gradient plus stiffness; Derrick's scaling then gives E(s) = A·s + B/s, minimized at a finite size where the two contributions are exactly equal (the virial E₂ = E₄ — testable in the computation, and tested). The knot cannot unwind (topology) and now cannot collapse (stiffness): a particle. This door we can walk through with a computer, and do.
5The Construction: Energy and Equation
For
E = (
The first bracket-pair is the gradient content E₂; the second is the stiffness content E₄. Note what the prefactor says: the whole spectrum of the model is one energy scale,
(x²/4 + 2sin²f)·f″ + (x/2)·f′ + sin2f·f′² − sin2f/4 − sin²f·sin2f/x² = 0
with f(0) = π, f(∞) = 0, and the large-x tail f ~ 1/x². The winding number, expressed through the profile, is B = −(2/π)∫ sin²f · f′ dx, which evaluates to exactly 1 for any profile running from π to 0 — the topology is in the boundary conditions, not the details. One equation, one unknown function, no further input.
6The Computation: a Particle Condenses
The profile equation is solved by shooting: integrate outward from the core with a trial slope f′(0), and bisect on the slope until the trajectory neither undershoots (turning back up before reaching zero) nor overshoots (crossing below zero) — sixty bisections, a fourth-order Runge–Kutta integrator, step 0.002, and the shot lands at
f′(0) = −1.0048
Figure 3. The solved winding profile. From full inversion at the core (f = π) the field unwinds monotonically to the identity at infinity, crossing the half-angle f = π/2 at x = 1.75 — which the ANW calibration places at r ≈ 0.49 fm. The tail decays as 1/x². This single curve is the entire particle.
Figure 4. The anatomy of the mass. Radial energy densities of the solved soliton: gradient (blue), stiffness (green), total (red). The two shaded areas are equal to 0.2 percent —
skyrmion_check.py — skyrmion
slope f'(0) = -1.004825 (paper: -1.0048) B = 1.0000 (baryon number = winding number; must be 1) virial E2/E4 = 0.9979 (Derrick balance; must be 1) E = 36.47 (F_pi/e) ; E/3pi^2 = 1.2319 (literature: 36.5, 1.232) ANW calibration F_pi=129 MeV, e=5.45: M = 863 MeV core
# Skyrmion verification: shooting solve of the hedgehog profile (pure standard library)
# E = (F_pi/e) 4pi Int dx [ x^2 f'^2/8 + sin^2 f /4 + sin^2 f f'^2 + sin^4 f/(2x^2) ]
import math
sin, pi = math.sin, math.pi
def fpp(x,f,g):
s=sin(f); s2=sin(2*f)
return (s2/4 + s*s*s2/(x*x) - (x/2)*g - s2*g*g)/(x*x/4 + 2*s*s)
def step(x,f,g,h):
k1f,k1g=g,fpp(x,f,g)
k2f,k2g=g+h/2*k1g,fpp(x+h/2,f+h/2*k1f,g+h/2*k1g)
k3f,k3g=g+h/2*k2g,fpp(x+h/2,f+h/2*k2f,g+h/2*k2g)
k4f,k4g=g+h*k3g,fpp(x+h,f+h*k3f,g+h*k3g)
return f+h/6*(k1f+2*k2f+2*k3f+k4f), g+h/6*(k1g+2*k2g+2*k3g+k4g)
def classify(a,xmax=30.0,h=0.002):
x,f,g = 0.01, pi+a*0.01, a
while x<xmax:
if f<0: return 'over'
if g>0 and f>0.2: return 'under'
f,g = step(x,f,g,h); x+=h
return 'end'
lo,hi=-4.0,-0.5; rlo=classify(lo)
for _ in range(60):
mid=0.5*(lo+hi)
if classify(mid)==rlo: lo=mid
else: hi=mid
a=0.5*(lo+hi)
x,f,g,h = 0.01, pi+a*0.01, a, 0.002
E2=E4=B=0.0
while x<30.0 and f>1e-8:
s=sin(f)
E2 += (x*x*g*g/8 + s*s/4)*h; E4 += (s*s*g*g + s**4/(2*x*x))*h
B += -(2/pi)*s*s*g*h
f,g = step(x,f,g,h); x+=h
C=4*pi*(E2+E4)
print(f"slope f'(0) = {a:.6f} (paper: -1.0048)")
print(f"B = {B:.4f} (baryon number = winding number; must be 1)")
print(f"virial E2/E4 = {E2/E4:.4f} (Derrick balance; must be 1)")
print(f"E = {C:.2f} (F_pi/e) ; E/3pi^2 = {C/(3*pi*pi):.4f} (literature: 36.5, 1.232)")
print(f"ANW calibration F_pi=129 MeV, e=5.45: M = {C*129/5.45:.0f} MeV core")
7Calibration, and the Spin from the Double Cover
Two constants calibrate the model to nature. Adkins, Nauenberg and Witten (1983) fixed
M = 36.47 ×
the classical core of the nucleon, with the half-angle radius at 0.49 fm — half a femtometre, the right room. The remaining structure is rotational. To distinguish the nucleon from the Δ(1232), ANW spin the soliton and quantize the rotation: the N and the Δ are the lowest rotational levels of the knot, split by an energy that fits at the constants above. The series has a name for this: the mass is the dance — the Regge logic of the companion conversation, here operating at the level of the ground state itself.
8The Ledger: Priority, Duality, and the Located Debt
9The Program Forward
10The Sentence
A particle is a knot the space quaternion cannot untie, held at a size the stiffness will not let it flee: tonight one such knot was tied in a calculation — combed radially like the cosmos, wrapped once, balanced at the virial, weighing 863 MeV and measuring half a femtometre — and it was a nucleon; the wall between this framework and doing the same for the electron has a name, Derrick, a location, one fitted constant, and a door already ajar: the clock.
References
T. H. R. Skyrme, Proc. Roy. Soc. A 260, 127 (1961) and Nucl. Phys. 31, 556 (1962); G. H. Derrick, J. Math. Phys. 5, 1252 (1964); D. Finkelstein and J. Rubinstein, J. Math. Phys. 9, 1762 (1968); E. Witten, Nucl. Phys. B 160, 57 (1979) and Nucl. Phys. B 223, 433 (1983); G. S. Adkins, C. R. Nauenberg and E. Witten, Nucl. Phys. B 228, 552 (1983); S. Coleman, Nucl. Phys. B 262, 263 (1985) — Q-balls; L. D. Faddeev (the topological bound); and the papers and notes of this series (the Postulates; the field-equations note — the Lanczos–Conway road; the Pauli paper — Finkelstein–Rubinstein and
11Verification
The companion scripts, with their recorded output. Each script's docstring states what it establishes and what it does not; the Source tab shows the file itself, unedited.
skyrmion_figs.py — skyrmion_figs
a=-1.004825 B=1.0000 E2=18.218 E4=18.257 C=36.47 C/3pi^2=1.2319 xhalf=1.75 figures written
# -*- coding: utf-8 -*-
"""Solve the Skyrmion and render the four concept figures from the actual solution.
DEPENDENCIES (declared explicitly): this figure script requires matplotlib and
numpy, which are NOT part of the Python standard library. Install with:
python -m pip install matplotlib numpy
The physics/verification lives in the stdlib-only skyrmion_check.py; THIS script
is figures-only, so a runtime without matplotlib should run skyrmion_check.py
instead. We fail fast with a clear message rather than a bare ImportError.
"""
import math, json
try:
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
except ImportError as exc:
raise SystemExit(
"skyrmion_figs.py needs matplotlib + numpy (missing: %s). "
"Run `python -m pip install matplotlib numpy`, or use the stdlib-only "
"skyrmion_check.py for the numbers without the figures." % exc.name)
sin, cos, pi = math.sin, math.cos, math.pi
def fpp(x, f, g):
s = sin(f); s2 = sin(2*f)
return (s2/4 + s*s*s2/(x*x) - (x/2)*g - s2*g*g) / (x*x/4 + 2*s*s)
def integrate(a, xmax=30.0, h=0.002, record=False):
x, f, g = 0.01, pi + a*0.01, a
xs, fs, gs = [x], [f], [g]
while x < xmax:
if not record:
if f < 0: return "over", None
if g > 0 and f > 0.2: return "under", None
k1f,k1g = g, fpp(x,f,g)
k2f,k2g = g+h/2*k1g, fpp(x+h/2,f+h/2*k1f,g+h/2*k1g)
k3f,k3g = g+h/2*k2g, fpp(x+h/2,f+h/2*k2f,g+h/2*k2g)
k4f,k4g = g+h*k3g, fpp(x+h, f+h*k3f, g+h*k3g)
f += h/6*(k1f+2*k2f+2*k3f+k4f); g += h/6*(k1g+2*k2g+2*k3g+k4g); x += h
if record:
if f < 1e-8: break
xs.append(x); fs.append(f); gs.append(g)
return ("end", (xs,fs,gs)) if record else ("end", None)
lo, hi = -4.0, -0.5
rlo = integrate(lo)[0]
for _ in range(60):
mid = 0.5*(lo+hi)
if integrate(mid)[0] == rlo: lo = mid
else: hi = mid
a = 0.5*(lo+hi)
_, (xs,fs,gs) = integrate(a, record=True)
xs = np.array(xs); fs = np.array(fs); gs = np.array(gs)
e2 = xs**2*gs**2/8 + np.sin(fs)**2/4
e4 = np.sin(fs)**2*gs**2 + np.sin(fs)**4/(2*xs**2)
E2, E4 = 4*pi*np.trapezoid(e2,xs), 4*pi*np.trapezoid(e4,xs)
B = -(2/pi)*np.trapezoid(np.sin(fs)**2*gs, xs)
C = E2+E4
xhalf = xs[np.argmin(abs(fs-pi/2))]
print(f"a={a:.6f} B={B:.4f} E2={E2:.3f} E4={E4:.3f} C={C:.2f} C/3pi^2={C/(3*pi*pi):.4f} xhalf={xhalf:.2f}")
json.dump({"a":a,"B":float(B),"E2":float(E2),"E4":float(E4),"C":float(C),"xhalf":float(xhalf)},
open("skyrmion_results.json","w"))
BLUE="#1f4e79"; RED="#c0392b"; GREEN="#1e8449"
plt.rcParams.update({"font.size":11,"axes.spines.top":False,"axes.spines.right":False})
# ---- Fig 1: the hedgehog ------------------------------------------------
fig, ax = plt.subplots(figsize=(7.0,6.2))
fmax = 4.0
th = np.linspace(0,2*pi,28,endpoint=False)
for r in np.linspace(0.35, fmax, 11):
fv = float(np.interp(r, xs, fs))
L = 0.42*math.sin(fv) + 1e-9
for t in th:
cx, cy = r*math.cos(t), r*math.sin(t)
col = plt.cm.viridis(fv/pi)
ax.annotate("", xy=(cx+L*math.cos(t), cy+L*math.sin(t)), xytext=(cx,cy),
arrowprops=dict(arrowstyle="-|>", color=col, lw=1.6))
ax.add_patch(plt.Circle((0,0), 0.22, color=plt.cm.viridis(1.0)))
ax.text(0, 0, "-1", color="white", ha="center", va="center", fontsize=10, fontweight="bold")
ax.text(0.97, 0.03, "U -> +1 at infinity", transform=ax.transAxes, ha="right", color=plt.cm.viridis(0.0))
sm = plt.cm.ScalarMappable(cmap="viridis", norm=plt.Normalize(0,1))
cb = fig.colorbar(sm, ax=ax, shrink=0.8); cb.set_label("profile f / pi (1 at core -> 0 outside)")
ax.set_xlim(-fmax-0.7,fmax+0.7); ax.set_ylim(-fmax-0.7,fmax+0.7); ax.set_aspect("equal")
ax.set_xticks([]); ax.set_yticks([])
ax.set_title("The hedgehog: Hamilton's units combed radially\nU = cos f + sin f (x^.(i,j,k)) - arrow length ~ sin f, the imaginary quill", fontsize=11)
fig.tight_layout(); fig.savefig("fig1_hedgehog.png", dpi=160); plt.close(fig)
# ---- Fig 2: Derrick's wall ---------------------------------------------
fig, ax = plt.subplots(figsize=(7.0,4.6))
s = np.linspace(0.18, 3.0, 400)
A = Bq = C/2
ax.plot(s, A*s, color=BLUE, lw=2, label="gradient energy E2 ~ s")
ax.plot(s, Bq/s, color=GREEN, lw=2, label="stiffness energy E4 ~ 1/s")
ax.plot(s, A*s+Bq/s, color=RED, lw=2.6, label="total")
ax.plot(1, C, "o", color=RED, ms=8)
ax.annotate("the soliton: s*=1, E = 36.5 (Fpi/e)\nvirial: E2 = E4", xy=(1,C), xytext=(1.45,C+9),
arrowprops=dict(arrowstyle="->", color=RED), color=RED)
ax.annotate("gradient alone:\nslides to zero size - collapse", xy=(0.28, A*0.28), xytext=(0.55,6),
arrowprops=dict(arrowstyle="->", color=BLUE), color=BLUE, fontsize=10)
ax.set_xlabel("soliton size s (dimensionless)"); ax.set_ylabel("energy (units of Fpi/e)")
ax.set_ylim(0, 95); ax.legend(frameon=False, loc="upper center")
ax.set_title("Derrick's wall, and how the stiffness term catches the collapse")
fig.tight_layout(); fig.savefig("fig2_derrick.png", dpi=160); plt.close(fig)
# ---- Fig 3: the solved profile -----------------------------------------
fig, ax = plt.subplots(figsize=(7.0,4.4))
ax.plot(xs, fs/pi, color=BLUE, lw=2.4)
ax.axhline(0.5, color="0.75", lw=0.8, ls="--")
ax.axvline(xhalf, color="0.75", lw=0.8, ls="--")
ax.plot(xhalf, 0.5, "o", color=RED, ms=7)
ax.annotate(f"f = pi/2 at x = {xhalf:.2f}\n-> r = 0.49 fm (ANW units)", xy=(xhalf,0.5),
xytext=(xhalf+2.2,0.62), arrowprops=dict(arrowstyle="->", color=RED), color=RED)
ax.annotate(f"slope f'(0) = {a:.3f}\n(found by shooting)", xy=(0.35,0.965), xytext=(2.6,0.9), color=BLUE,
arrowprops=dict(arrowstyle="->", color=BLUE))
ax.text(9.5, 0.09, "tail f ~ 1/x^2", color="0.4")
ax.set_xlim(0,14); ax.set_ylim(0,1.03)
ax.set_xlabel("x = e Fpi r (dimensionless radius)"); ax.set_ylabel("f / pi")
ax.set_title("The winding profile: S3 wrapped exactly once (B = 1.0000)")
fig.tight_layout(); fig.savefig("fig3_profile.png", dpi=160); plt.close(fig)
# ---- Fig 4: where the mass lives ---------------------------------------
fig, ax = plt.subplots(figsize=(7.0,4.4))
ax.fill_between(xs, 4*pi*e2, color=BLUE, alpha=0.30)
ax.fill_between(xs, 4*pi*e4, color=GREEN, alpha=0.30)
ax.plot(xs, 4*pi*e2, color=BLUE, lw=2, label=f"gradient density (area = {E2:.1f})")
ax.plot(xs, 4*pi*e4, color=GREEN, lw=2, label=f"stiffness density (area = {E4:.1f})")
ax.plot(xs, 4*pi*(e2+e4), color=RED, lw=2.4, label=f"total (area = {C:.1f} = 1.232 x 3pi^2)")
ax.set_xlim(0,8); ax.set_xlabel("x = e Fpi r"); ax.set_ylabel("radial energy density (Fpi/e per unit x)")
ax.legend(frameon=False)
ax.set_title("The anatomy of the mass: equal areas - the Derrick balance, computed")
fig.tight_layout(); fig.savefig("fig4_energy.png", dpi=160); plt.close(fig)
print("figures written")