◄ WORLD V · SONNY 5DART 010 · a helldive at the net

THE COLLATZ CONJECTURE 3n + 1

A dart thrown at the simplest unsolved problem in mathematics: pick any positive integer — if it is even halve it, if it is odd triple-and-add-one — and it always seems to fall to 1. Nobody has proved it since 1937. We fly the hailstone, credit who actually asked, and — this time — watch a wall in I-13 come down. Three prongs, one dart.

THE TECHNIQUE even → n/2 · odd → 3n+1 · fly the hailstone

The whole rule is one line of arithmetic and one parity test (n % 2). Iterate it and the value bounces — the “hailstone” — rising and crashing with no visible pattern, until it reaches 1. We track the peak height it climbs to and the total stopping time (steps to 1). live demo

n even → n / 2 n odd → 3*n + 1 // one parity test: n % 2 repeat until n == 1
hailstone trajectory · log height vs step
stopping time histogram · starts n = 1 … 10,000

Every one of the first 10,000 starts reaches 1 — measured live, in your browser, on load. The record here: start takes steps. Computers have now verified the conjecture past 271 ≈ 2.36×1021 — and still no proof exists. cited

HISTORY & CREDIT credit where it is due

This problem wears more names than almost any in mathematics, and no single one is wrong so much as incomplete. The primary credit is settled; the rest is a tangle of independent rediscovery. cited

1937 · Lothar Collatz (German mathematician) — first states the 3n+1 iteration. The primary and canonical credit. The problem’s main name is his.
1930s–40s · Stanisław Ulam — associated early enough that it is also called the Ulam conjecture.
· Shizuo Kakutani — circulated it so widely it became Kakutani’s problem.
1950s · Helmut Hasse — discussed it at Syracuse University, giving it the name the Syracuse problem (and “Hasse’s algorithm”).
1952 · Bryan Thwaites — states it independently; hence the Thwaites conjecture.

What is settled: Collatz, 1937, gets primary credit as the originator. What is open: the conjecture itself — unproven for 88 years. Paul Erdős said of it, roughly, that mathematics is not yet ready for such problems. Verified by computer past 271; a proof remains out of reach. open

RECOMMEND FOR I-13 the wall that came down

The parity test is n % 2 — a modulo. The I-13 brief is explicit: BinOp is + − × / only — no bitwise, no shift, no %. Collatz was, on paper, unwriteable in the language. So this dart is a test of the language panel’s own proposal: add % as a new BinOp discriminant — zero new alphabet symbols. I ran it against the real compiler.

The wall came down. The parser now takes % (as BinaryOp::Modbin::MOD), and Collatz — written in real I-13, using recursion for the loop I-13 does not otherwise have — runs on the built binary:

def collatz_steps(I n) { if n <= 1 { -> 0 } if n % 2 == 0 { -> 1 + collatz_steps(n / 2) } -> 1 + collatz_steps(3 * n + 1) } I steps_27 <- collatz_steps(27)
$ ./target/debug/i13 run collatz.i13 RUN OK · 4792 step(s) · peak stack 4 · call depth 119 steps_6 = 8 steps_27 = 111 <- the famous one: 27 takes 111 steps steps_97 = 118
Recommend (and it is already shipping on the branch): keep %. It is the cheapest honest fix — one new BinOp discriminant, zero new alphabet symbols, so the counted 13-symbol identity is untouched. Modulo is not a luxury: parity, clock arithmetic, hashing and every “is it divisible” test live here, and without it the whole family is inexpressible in pure + − × / on f64 (you can fake it with n − 2×floor(n/2) — but I-13 has no floor either).
Honest status: live demo the run above is real — but % lives on branch panel-recommends (commit bf1a19b, “+%”), not yet on main. This is a proposal that works, not a merged fact.
Tradeoff: almost none. Division by zero is the only new hazard, and I-13 already returns non-finite f64 on / 0 without a type system to catch it — % 0 inherits exactly that. A dart where evolution paid off: the technique named a real gap, the panel filled it for one discriminant, and the program runs.