Analytic Number Theory · Wessen Getachew · 2026
The Goldbach Diagonal
Strip Arithmetic I
c : r + M = g · d : r + M = E − g · E = 2(G+1)
E = 244 = 61 + 183
· r(E) = — pairs
· drag the gap slider ↓
Claim
On the G×G lattice, strip c is fully coprime exactly when g is prime, and strip d is fully coprime whenever s = E − g is prime. Above the threshold g > √E the second implication reverses as well — so both sum strips fully lit becomes exactly E = g + s is a Goldbach partition.
On the G×G lattice, strip c is fully coprime exactly when g is prime, and strip d is fully coprime whenever s = E − g is prime. Above the threshold g > √E the second implication reverses as well — so both sum strips fully lit becomes exactly E = g + s is a Goldbach partition.
Show work▶
Both directions reduce to a single gcd identity: along the sum strip r + M = g, gcd(r, M) = gcd(r, g − r) = gcd(r, g).
So strip c samples one full period of gcd(·, g) minus the point r = g, holding exactly φ(g) coprime cells; it is full
iff φ(g) = g − 1, i.e. iff g is prime. Strip d does the same against s, but only sees a window of g − 1 consecutive
residues of the longer period s — which is why it can come up full on a composite s below the threshold, and why the
leak closes above it. Worked through cell by cell in
the partition drawer ↓, and in full in
The claim ↓.
▸Reading the lattice
On a square lattice of side G, every cell (r, M) is coloured by whether gcd(r, M) = 1.
Fixing a value g slices out four straight lines through that lattice — two of constant difference
(a, b) and two of constant sum (c, d) — and asks whether each line is entirely
coprime, cell to cell. Sliding g sweeps every way the even number E splits into two parts,
g and s = E − g; the lattice itself proves when that split is a Goldbach pair — both parts prime.
Tap any term to light it up on the lattice — works in Grid, Ring and Cayley. Tap again (or press Esc) to clear. The glyph shows where the line sits in the square and which way it runs.
r1…194
the lattice's horizontal coordinate. One of the two numbers gcd() is taken of.
M1…121
the lattice's vertical coordinate, playing the role of "modulus" against r.
G121
the lattice's side length. Sets how far g can range and how large E gets.
g61
the gap: the constant sum or difference each of the four strips is built around.
s183
the partner: s = E − g, the other addend in the even split E = g + s.
E244
the even number being split: E = 2(G+1), fixed once G is chosen.
aM − r = g
difference strip, running down-right below the main diagonal.
br − M = g
difference strip; the transpose of a, so they agree cell for cell.
cr + M = g
sum strip, running up-right near the origin corner — fully coprime exactly when g is prime.
dr + M = E − g
sum strip, running up-right near the far corner — fully coprime whenever s is prime, exactly so once g > √E.
The lattice
a M−r=g↘
b r−M=g↘
c r+M=g↗
d r+M=E−g↗
Figure 1. The G×G coprimality lattice with the four strips of gap g overlaid. Hover a cell (Grid view) for its
gcd reduction; click to jump the gap to the sum strip through that cell.
▸Multi-pair
Overlay
▸Instrument
Lattice
Grid G
Next N
Play +N is local: it anchors on whatever G you are on, steps up one grid at a time to G + N, then loops back to the anchor. Window: 194 → 204.
Gap g
Even E
390 = g + s
Sweep
Sliding g walks every additive partition E = g + s. The two sum strips carry those parts.
▸Magnifier
Zoom
Park
Press and hold a point on the lattice, drag to pan the lens, release to jump the gap there.
auto keeps the lens above your finger and slides it sideways when it runs out of headroom — continuously, so it never jumps across the pointer the way it used to at mid-plate. Pin it to a corner if you would rather it never moved at all.
The lens now centres on the true point everywhere, including the outermost row, column and all four corners. Past the lattice edge the view goes empty and the dashed gold line marks where the boundary falls — that emptiness is the edge, not a rendering fault.
auto keeps the lens above your finger and slides it sideways when it runs out of headroom — continuously, so it never jumps across the pointer the way it used to at mid-plate. Pin it to a corner if you would rather it never moved at all.
The lens now centres on the true point everywhere, including the outermost row, column and all four corners. Past the lattice edge the view goes empty and the dashed gold line marks where the boundary falls — that emptiness is the edge, not a rendering fault.
▸Presets
Each preset fixes an even E and puts G = E/2 − 1, the grid whose corner frame carries that partition. Hover for why each one is here.
Compare 48 and 52: nearly the same size, 5 representations against 3. An E divisible by 6 can draw primes from both residue classes mod 3; one that is not divisible by 3 cannot, and lands in the sparse band. That split is the banding in Goldbach's comet.
Compare 48 and 52: nearly the same size, 5 representations against 3. An E divisible by 6 can draw primes from both residue classes mod 3; one that is not divisible by 3 cannot, and lands in the sparse band. That split is the banding in Goldbach's comet.
▸Strips
Dim off
45%
Everything not on a strip is washed back by the dim, so the four lines read against the full coprimality field rather than replacing it.
▸Rendering
Colour
Labels
Size
1.00×
Grid: labels draw only where a cell clears the pile-up gate (13 px at size 1×, scaled with the slider), so they never collide. Above roughly G = 320 the canvas switches to a one-pixel-per-cell buffer and scales it without smoothing.
Ring / Cayley: the current strip points are always labelled; the rest of the lattice joins in once there's room for it — G ≤ 256, the zoom-in slider past 2×, or size at 0.7× or below. Each label claims the rectangle it actually measures, so nothing overlaps at any size.
Grade exists because crowding in the polar views is a function of radius, not a constant. At G = 20…30 every point has room and 0% — one size everywhere — is right. By G ≈ 200 the inner rings are a smear while the rim is still half empty; grading spends small type on the packed middle and full type on the open rim, which raises the number of readable labels instead of trading one zone off against the other.
Ring / Cayley: the current strip points are always labelled; the rest of the lattice joins in once there's room for it — G ≤ 256, the zoom-in slider past 2×, or size at 0.7× or below. Each label claims the rectangle it actually measures, so nothing overlaps at any size.
Grade exists because crowding in the polar views is a function of radius, not a constant. At G = 20…30 every point has room and 0% — one size everywhere — is right. By G ≈ 200 the inner rings are a smear while the rim is still half empty; grading spends small type on the packed middle and full type on the open rim, which raises the number of readable labels instead of trading one zone off against the other.
▸Export
Views
Plate
Checking one view downloads that view alone. Checking two, three, or four tiles them into a single PNG — side-by-side for two, a triangle for three, a 2×2 grid for four. The view you're currently looking at gets auto-checked when you switch.
Partition drawer
Partition table
—
n (gap = 2n)
flags g/s with a prime partner 2n away · n=1 twin, n=2 cousin, n=3 sexy
Step by stepselect a row
Pick a row from the partition table, or move the gap slider.
The drawer walks each lattice point on the two sum strips and shows the gcd reduction that decides it.
The drawer walks each lattice point on the two sum strips and shows the gcd reduction that decides it.
How the three views are built
All three views draw the same set: the G² ordered pairs (r, M) with 1 ≤ r, M ≤ G, each carrying the
single bit gcd(r, M) = 1. Nothing is added, removed, or recomputed between them. What changes is only the
injection of that index set into the plate — one affine, one polar, one Möbius. Everything below is the
actual arithmetic the canvas runs, stated so the pictures can be checked rather than trusted.
1 · Grid — the identity injection▶
Grid is the trivial case: the index pair is used as a coordinate directly, scaled to the plate. With plate
side p and cell pitch δ = p/G, cell (r, M) has its centre at
(x, y) = ((r − ½)·δ, (M − ½)·δ), δ = p/G
The map is injective, affine, orientation-preserving in x and flipped in y only because the canvas puts y
downward. Because it is affine, straight lines stay straight — which is the whole reason the four
strips read as strips here. Constant difference M − r = g and constant sum r + M = g are lines of slope +1
and −1, so a, b, c, d appear as four straight segments and "fully coprime" is a property you can check by
running your eye along one of them. No other view has that property.
The cost is that Grid has no way to express the multiplicative structure of a pair. r = 7, M = 21 and
r = 1, M = 3 are the same reduced fraction and sit in unrelated corners of the square.
2 · Ring — residues as roots of unity▶
Ring sends M to a radius and r to an angle:
ρ = M/G ∈ (0, 1], θ = 2π·r/M ⟹ (x, y) = (c + R·ρ·cos θ, c − R·ρ·sin θ)
The angle is the point of the construction. θ = 2πr/M depends on r only through r mod M, so ring M is
the cyclic group ℤ/Mℤ drawn as M equally spaced marks, and the plotted point is the complex number
e2πir/M — an M-th root of unity. The coprimality bit then has an exact meaning in the picture:
e2πir/M is a primitive M-th root of unity ⟺ gcd(r, M) = 1
So the lit points of ring M are precisely its primitive roots — the generators of ℤ/Mℤ — and there are φ(M)
of them per turn. Summing that over the rings recovers the classical count, which is the same 6/π² that runs
through the rest of the suite:
ΣM ≤ G φ(M) = (3/π²)·G² + O(G log G) ⟹ density of coprime pairs in the square → 6/π² = 1/ζ(2)
What happens past one turn. r runs to G, not to M, so for M < G the angle formula runs past 2π and a
decision has to be made. The θ map control makes that decision explicit; all three are exact, and they differ
in what they throw away.
wrap θ = 2πr/M — surjective onto the M-th roots; each root receives ⌊G/M⌋ or ⌈G/M⌉ values of r
clamp θ = 2π·min(r/M, 1) — injective on r < M; the G − M + 1 values r ≥ M all collapse to the θ = 0 spoke
unit θ = 2πr/G — injective in r on every ring, but the roots are now G-th roots on every ring, not M-th
clamp θ = 2π·min(r/M, 1) — injective on r < M; the G − M + 1 values r ≥ M all collapse to the θ = 0 spoke
unit θ = 2πr/G — injective in r on every ring, but the roots are now G-th roots on every ring, not M-th
wrap keeps the root-of-unity meaning and loses injectivity: r and r + M land on the same pixel and
cannot be told apart. clamp keeps injectivity on the genuine fractions r/M ∈ (0, 1) — the Farey side —
and pays for it with a spoke whose thickness at ring M is exactly G − M + 1. unit keeps injectivity
everywhere and loses the arithmetic: the angle no longer knows what M is, so gcd(r, M) = 1 shows up as
radial spokes rather than as a per-ring pattern.
None of the three is the "right" one. wrap is right if you are looking at ℤ/Mℤ; clamp is right if you are looking at Farey fractions; unit is right if you want to compare the same r across rings.
3 · Cayley — the Möbius image, derived in full▶
Cayley takes the ring point as a complex number and applies a Möbius transformation. The radius is first
remapped by a fixed affine rule, then:
z = ρ·eiθ, ρ = ρ₀ + Δρ·(M/G), w = Γ(z) = (z − 1)/(z + 1)
ρ₀ and Δρ are the two controls on the Spacing panel; the view opens on 0.4 and 1.8, giving ρ ∈ [0.4, 2.2].
The derivation below holds for any pair.
Γ is a genuine Cayley transform — it carries the right half-plane Re z > 0 bijectively onto the unit disk,
and its inverse is z = (1 + w)/(1 − w), which is what the click hit-test inverts. To see what it does to the
rings, impose |z| = ρ on the inverse. Writing w = u + iv:
|z| = ρ ⟺ |1 + w| = ρ|1 − w| ⟺ (1+u)² + v² = ρ²[(1−u)² + v²]
Expanding and collecting gives (1 − ρ²)(u² + v²) + 2u(1 + ρ²) + (1 − ρ²) = 0, and for ρ ≠ 1 dividing by
(1 − ρ²) puts it in circle form:
centre −(1 + ρ²)/(1 − ρ²) on the real axis · radius 2ρ/|1 − ρ²|
These are the Apollonius circles of the point pair ±1: each is the locus where |z−1|/|z+1| is
constant. The rays θ = const map to the orthogonal family, arcs running from Γ(0) = −1 to Γ(∞) = +1. Adding
centre and radius gives the furthest point of each ring image, and it simplifies cleanly:
max |Γ| on ring ρ = (1 + ρ²)/|1 − ρ²| + 2ρ/|1 − ρ²| = (1 + ρ)²/|1 − ρ²| = (1 + ρ)/|1 − ρ|
One locus is not a circle: |z| = 1 forces |1 + w| = |1 − w|, whose solution set is the line u = 0. The unit
circle maps to the imaginary axis, which is unbounded. Equivalently |Γ(z)| = 1 ⟺ Re z = 0, so the
reference circle drawn on the Cayley plate is exactly the image of the two rays θ = ±π/2.
4 · The pole, and the two bounded alternatives▶
The formula (1 + ρ)/|1 − ρ| decides everything about Γ, and it diverges at ρ = 1. The view opens on
ρ ∈ [0.4, 2.2], which straddles that value. At the outer ring ρ = 2.2 the bound is 3.2/1.2 = 2.667 —
a comfortable finite number that describes one ring and not the image. Solving for the ring that carries the
singularity:
ρ₀ + Δρ·(M/G) = 1 ⟺ M = G·(1 − ρ₀)/Δρ — at the opening values, M = G/3
so the pole z = −1 sits on that ring at the angle θ = π, i.e. at r ≈ M/2. Measured over the full lattice the
largest image modulus lands there every time: 17.7 at G = 30, 402 at G = 121 (r = 20, M = 40), 852 at
G = 512 (r = 85, M = 170), 1708 at G = 1024 (r = 171, M = 342). Two consequences follow.
The picture is unbounded, so some of it is always missing. Whatever the zoom-out divisor is set to, it
draws a finite disk around a map with no finite maximum, and what lies beyond is clipped — not a random
selection, but one ring being discarded. The plate readout reports the measured maximum and the clipped
fraction for the settings that are live, rather than a figure fixed at one choice of constants.
The singular ring is arithmetically meaningless. M = G(1 − ρ₀)/Δρ is an artefact of the two spread
constants. Nothing about coprimality, Farey structure or the strips distinguishes that ring, and a different
pair puts the singularity somewhere else — or removes it, which is what the ρ₀ and Δρ controls are for. Push
ρ₀ above 1, or ρ₀ + Δρ below it, and the annulus no longer contains ρ = 1: Γ becomes bounded with the exact
ceiling (1 + ρ)/|1 − ρ| evaluated at whichever endpoint is nearer 1. The measured maximum then sits just
under that ceiling, because ρ₀ is approached and not attained — the innermost ring is M = 1, not M = 0 — and
the maximum on a ring requires θ = π to land on a lattice point.
The transformation itself is correct: Γ, its inverse and the complex division are exact, and the θ map is
irrelevant to the problem — the singularity survives wrap, clamp and unit alike, because it is a property of
the domain rather than of the angle. That leaves the choice of domain as the open question, and two
bounded maps answer it differently. Both are on the map selector.
B · the Blaschke automorphism. Put the ring where it already sits, z = (M/G)·eiθ, so the
lattice fills the closed unit disk and M = G is the unit circle. Then
φa(z) = (z − a)/(1 − āz), |a| < 1
maps the disk bijectively onto itself. Its only pole is at z = 1/ā, of modulus 1/|a| > 1, outside the disk —
so no lattice point can blow up, |φa| ≤ 1 holds everywhere, nothing is clipped, and the zoom-out
divisor has nothing to do. φa is an isometry of the Poincaré metric: setting a ≠ 0 is a hyperbolic
translation that re-centres the disk on a, magnifying its neighbourhood and compressing the far rim without
distorting a single hyperbolic distance. At a = 0 it is the identity and the plate reproduces Ring exactly,
so this map is a continuous deformation of the second view rather than an unrelated third one. The cost is
the name: φa is not a Cayley transform, and the plate caption reads Blaschke while it is
live.
C · the classical Cayley transform, on Ford coordinates. K(z) = (z − i)/(z + i) carries the upper
half-plane bijectively onto the disk, and its pole z = −i lies in the lower half, which the lattice never
reaches. The coordinates it is fed are the ones the modular group acts on:
z = r/M + i·y ∈ ℍ, y = gain·M−κ, κ = 1 giving the Ford height 1/M
The real part is the fraction r/M itself and the height is the Farey depth: larger denominators sit lower,
nearer the real line. This is the horocycle picture behind Ford circles — the circle tangent to ℝ at r/M with
radius 1/(2M²). Under K the real line maps to the boundary circle, so every reduced fraction lands on the rim
at a position given by its value, with the height controlling how far inside the rim it sits. At κ = 1 that
crushes almost the whole lattice against the boundary; lowering κ lifts the deep fractions inward and moves
no real part, so it distorts height alone. It is the one map of the three where gcd(r, M) = 1 has a direct
geometric meaning in the target picture.
Two things follow from C reading r/M as a position rather than an angle. The θ map has nothing to
choose between and is disabled while C is live, and the rotate control acts on the finished disk instead of
on a pre-image angle. The upper half of the plate is also structurally empty, since every r/M is positive and
K sends the positive reals to the lower half of the boundary circle. Mirror fills it with the branch
−r/M + iy, and
K(−x + iy) = conj K(x + iy) — exact, verified to 0 across the lattice
so the filled half is the reflection of the drawn one. That is symmetry, not information: every mirrored
point is a point already on the plate. It is drawn dimmer for that reason, and it is neither labelled nor
selectable.
The claim
1 · Why strip c is full exactly on primes▶
c is fully lit exactly when g is prime — it spans one whole period of gcd(·, g) minus the single
point r = g, so it holds precisely φ(g) coprime points.
gcd(r, M) on r + M = g = gcd(r, g − r) = gcd(r, g) → #coprime = φ(g), full ⟺ φ(g) = g − 1 ⟺ g prime
2 · Why strip d leaks below the threshold▶
d is fully lit whenever s is prime, but it samples only g−1 residues of the longer period s, so
below the threshold it can come up full on a composite s.
d spans r = 1 … g−1 against period s = E − g → a partial window, not a full period
3 · Why the leak closes above g > √E▶
For g > √E the leak closes: a composite s has a prime factor ≤ √s, which a window of g−1 consecutive
integers cannot miss. There, both strips full ⟺ g and s both prime.
g > √E ⟹ [c full ∧ d full] ⟺ E = g + s is a Goldbach partition
4 · Terminology note▶
The g + s = E line this page sweeps is the lattice's anti-diagonal (constant sum) — not the
main diagonal g = s (constant difference), which is a different, unrelated line on the same grid.
"Diagonal" is kept in the title and the exports only because that is the established, shorter public name
for the project.
Part II of the C(n) block-coprime framework
·
grew out of Page 5 — the Gap Diagonal Identity
·
gcd(r, M) = gcd(r, M − r) = gcd(r, g)