{"slug": "who-writes-the-question", "title": "Who Writes the Question", "summary": "OpenAI published ten results on long-standing mathematical problems, including high-dimensional sphere packing and Connes's rigidity conjecture, found by an internal model called Astra at a token cost of about $2,000. The accompanying 249-page paper lists no mathematician authors and contains no methodology section, but the proofs are verified in Lean 4 via a GitHub repository that builds 549,982 lines of code with zero errors and depends only on three standard axioms. The verification took 37 minutes and 23 seconds on a laptop, and the repository pins the genuine mathlib4 v4.32.0 commit.", "body_md": "# Who Writes the Question\n\n# Who Writes the Question\n\nThis morning OpenAI published ten results on problems that have been open for at least a decade and mostly much longer: high-dimensional sphere packing, binary and spherical codes, non-sofic groups, Connes’s rigidity conjecture, arithmetic circuit complexity, quantum parallel repetition, the closest vector problem, Ehrhart’s volume conjecture, and three Erdős problems. 1 They were found by an internal version of a model called Astra. The tokens cost about $2,000.\n\nCount the names of mathematicians on it. There are none.\n\nIn May, when a model disproved Erdős’s unit-distance conjecture, the announcement came with a companion paper by nine of them — Alon, Bloom, Gowers, Litt, Sawin, Shankar, Tsimerman, Wang, Wood — who read the argument over a weekend and put their reputations on it. [I wrote at the time](https://korbonits.com/blog/2026-05-23-the-verification-problem/) that this was what “verified” meant, that it was expensive, and that it would not scale. Today’s release is what the same lab does ten weeks later, and the answer is that it doesn’t try. The 249-page paper contains no methodology section, no acknowledgments, and exactly one mention of AI, in the abstract: the results were “obtained by an internal OpenAI model.” The word “Lean” does not appear in it.\n\nThe epistemics were moved somewhere else. They were moved into a GitHub repository.\n\nSo I did the thing [I said in July](https://korbonits.com/blog/2026-07-20-trust-nothing-verify-everything/) was now the only sane response to a mathematical claim: I ignored the announcement and went and ran the certificate.\n\n## The receipt\n\n```\ngit clone https://github.com/openai/ten-proofs\ncd ten-proofs\nlake exe cache get\nlake build All\n```\n\nThirty-seven minutes and twenty-three seconds on a laptop. 8,666 jobs. Two warnings, both cosmetic — a `Try this:`\n\nsuggestion and a deprecated lemma name. No errors.\n\nThat builds 549,982 lines of Lean 4 across ten modules. `GapCVP.lean`\n\nalone is 130,430 lines; `MetricCodes.lean`\n\nis 114,408. The smallest, `MulticolorTriangleRamsey.lean`\n\n, is 3,053.\n\nThen the part that actually matters. Every comparator configuration in the repo names its headline theorems — 38 of them across the ten results — so I generated a file that imports everything and asks Lean what each one rests on:\n\n``` python\nimport All\n#print axioms PackingBounds.PackingBridge.sphere_packing_sharp_asymptotic_upper\n#print axioms ErdosProblems.MulticolourTriangleRamsey.erdos_183\n-- ...36 more\n```\n\nAll 38 came back identical:\n\n```\ndepends on axioms: [propext, Classical.choice, Quot.sound]\n```\n\nZero `sorryAx`\n\n. Zero non-standard axioms. Zero errors. That is the same three-element list that a one-line Lean proof rests on, and it is the same list for the 130,000-line one. This is the property I keep insisting is the whole ballgame: *the trust base does not grow with the difficulty of the theorem*. Nine experts do not scale. Three axioms do.\n\nThere are 42 `sorry`\n\ns in the repository, and I want to be precise about them because a casual grep would mislead you. Every one lives in `ComparatorChallenges/`\n\n, and they are not gaps in the proofs. They are the *statements*, pinned in separate files with their proofs deliberately omitted. More on why in a moment.\n\nOne more check, which took a single command and turned out to matter more than anything else I ran. Every challenge file begins with `import Mathlib`\n\n. If the pinned mathlib were a fork, then `SimpleGraph.extremalNumber`\n\nand `Matrix.permanent`\n\nand `VonNeumannAlgebra`\n\ncould mean anything at all, and the entire exercise would be reading a dictionary somebody else wrote. The manifest pins `81a5d257c8e410db227a6665ed08f64fea08e997`\n\n. The upstream `leanprover-community/mathlib4`\n\ntag `v4.32.0`\n\nis `81a5d257c8e410db227a6665ed08f64fea08e997`\n\n. Genuine.\n\n## What a certificate is, exactly\n\nThe repo uses [comparator](https://github.com/leanprover/comparator), a tool from the Lean developers that I hadn’t seen before and that deserves to be better known, because it is a precise engineering answer to the question this whole series has been circling.\n\nThe idea: split the artifact in two. A *challenge* file states a theorem and proves it with `sorry`\n\n. A *solution* file, written by whoever is trying to convince you, proves it for real. Comparator then checks three things — that the solution’s theorem has the same type as the challenge’s, that it uses no axioms outside an explicit allowlist, and that the Lean kernel accepts it. Every configuration in `ten-proofs`\n\nallows exactly `propext`\n\n, `Quot.sound`\n\n, `Classical.choice`\n\nand nothing else.\n\nThe README is the most interesting document in the pile, because it does something papers almost never do: it enumerates its own trust assumptions as a numbered list. You must control the challenge file’s imports. You must not have previously compiled the solution. The sandbox must hold. The kernel must be correct — or, with a second kernel enabled, *one of the two* must be. That list is finite, it is written down, and it does not get longer when the theorem gets harder. Compare the alternative, which is “nine famous people had a free weekend and thought it looked right.”\n\nI ran the half of this that a MacBook can run. Comparator’s sandbox is `landrun`\n\n, which is Linux Landlock, so I couldn’t use it — and I had already compiled the solutions before checking, which violates assumption 2 outright. All twelve configurations also set `enable_nanoda: true`\n\n, asking for a re-check by an independent Rust implementation of the Lean kernel, and I didn’t do that either. So what I ran is a check against error, not against a hostile OpenAI, and it trusts one kernel where the shipped configuration asks for two.\n\nBut the statement-matching half I could do, by elaborating each challenge module and the solution module in separate Lean processes and diffing the resulting types. **38 of 38 identical.** I checked the diff wasn’t lying by perturbing one statement — changing `n.factorial`\n\nto `(n.factorial + 1)`\n\nin the Ehrhart bound — and it flagged the mismatch immediately.\n\nSo the proofs prove the pinned statements. Which raises the only question left.\n\n## Who pinned the statements\n\nAll ten challenge files together are about 1,700 lines. They import nothing but Mathlib, so every definition the ten theorems depend on is right there, readable in an afternoon. I read them.\n\nMostly what you find is reassuring, and in a specific way: the load-bearing objects are frequently *mathlib’s*, not the model’s. The permanent lower bound is stated about `Matrix.permanent`\n\nof `Matrix.mvPolynomialX`\n\n. Both extremal graph theory results use `SimpleGraph.extremalNumber`\n\n. The GapCVP hardness result builds NP on `Turing.TM2ComputableInPolyTime`\n\n. Connes rigidity uses mathlib’s `VonNeumannAlgebra`\n\nand `IsStarProjection`\n\n. Every one of those is a definition written by strangers, years ago, for other reasons, and scrutinized by a community — which makes it very hard to bend toward a desired conclusion.\n\nThe Ehrhart file is 78 lines and I’d hand it to a graduate student as an example of how to state a conjecture: convex, compact, nonempty interior, centroid at the origin, the origin its only interior lattice point, therefore volume at most . There is nothing in it to argue with.\n\nBut some of it is bespoke, and the bespoke parts are exactly where you’d have to argue. Property (T) is defined in-file, quantified over Hilbert spaces in a single universe. Normality of a -isomorphism is rendered as preservation of suprema of projections rather than -weak continuity — standard-equivalent, but a choice. The quantum parallel repetition result models tensor-product strategies over finite-dimensional systems, which is the conventional entangled value and is *not* the commuting-operator value; the informal phrase “general two-player quantum games” does not tell you which. And `kissingNumber`\n\n, carrying a bound of , is defined in the challenge file. Mathlib has no kissing number.\n\nNone of that is wrong. All of it is somebody’s judgment, and the somebody is the system that also produced the proofs.\n\nAnd one result isn’t pinned at all. Result 5 is advertised as lower bounds “using arithmetic circuits **and** formulas.” The shipped comparator challenges cover the formula bounds only. `lakefile.toml`\n\ndeclares a thirteenth challenge root, `ComparatorChallenges.C_PermanentSuperquadraticStandalone`\n\n, and that file is not in the repository — so `lake build ComparatorChallenges`\n\nfails outright on a fresh clone, and the superquadratic circuit bound has no pinned statement to check it against. It may well be an oversight. I can’t ask: issues are disabled on the repository.\n\n## Three problems with an owner\n\nThe three Erdős results are the place to test this, because Erdős problems have a curator. Thomas Bloom maintains [erdosproblems.com](https://www.erdosproblems.com), and his statements are as close to canonical as this subject gets.[2](#user-content-fn-bloom146)[3](#user-content-fn-bloom180)[4](#user-content-fn-bloom183)\n\n**#146.** Bloom: *If is bipartite and is -degenerate, that is, every induced subgraph of has minimum degree , then .* OpenAI’s `IsDegenerate r G`\n\nsays every nonempty finite vertex subset contains a vertex with at most neighbours inside it — which is precisely “every induced subgraph has minimum degree .” The conclusion is `IsBigO`\n\n. It is a transcription. The one addition, `0 < r`\n\n, is forced by Lean’s convention that , and it cuts the safe way: excluding makes the conjecture weaker and refuting it harder. Their counterexample is at , which Bloom’s page notes was open by itself.\n\n**#180.** Bloom: *Is it true that, for every , there exists such that ?* Here there is a real deviation. OpenAI adds a hypothesis that every graph in the family contains a cycle. Bloom says “for every ,” full stop. The direction is conservative — their proposition is implied by his, so refuting theirs refutes his — and their witness family is additionally connected and bipartite, which is more restrictive still. It’s the correct direction to deviate in. It is still a deviation, and you only find it by reading both.\n\n**#183.** Bloom: *Let be the minimal such that if the edges of are coloured with colours then there must exist a monochromatic triangle. Determine .*\n\nLook at the verb. **Determine.** That is not a proposition. It has no truth value, so there is nothing to transcribe, and any formalization must *supply a candidate answer and then state it*. OpenAI’s `erdos_183`\n\nsupplies , backed by a superexponential lower bound: for . Erdős had offered $100 for a proof that the limit is finite. It isn’t.\n\nI’ve written about this shape before without noticing how far up it goes. In [Who Verifies the Verifier](https://korbonits.com/blog/2026-05-28-who-verifies-the-verifier/), DeepMind’s agent faced problem #125 through an `EVOLVE-VALUE`\n\nhole, and its entire contribution to the *statement* was the single token `False`\n\n. I called that five lines of code containing the whole shift. It was — but I read it as a curiosity of one benchmark. It isn’t. It is the generic situation for every problem phrased as an imperative, which is most of the interesting ones, and it means that for #183 there is no such thing as an independent transcription. Somebody has to agree that ”+∞” is the right *shape* of answer to “determine the limit.” That somebody is a human being reading Erdős, and today it was an employee of the company whose model produced the answer.\n\n## The registry still says open\n\nAs I write this, all three problems are listed **OPEN** on erdosproblems.com. #146 carries a 500 prize. #183 carries 250, plus Erdős’s $100 side bet on finiteness that just got settled the wrong way. The pages were last edited in January and April. Each one has a field reading “Formalised statement?” with a link inviting you to create one in [formal-conjectures](https://github.com/google-deepmind/formal-conjectures), DeepMind’s open repository of machine-readable conjecture statements. That repository currently has 510 Erdős problems formalized. It does not have 183, 146, or 180.\n\nIn July I made fun of Wikipedia for still calling the Jacobian conjecture unsolved the day after it fell. That was a newspaper being a day old. This is different and worse. This is the field’s own problem registry, curated by the person best placed to curate it, with no mechanism by which a vendor PDF and a GitHub repository become a status change. The Jacobian counterexample got formalized against a statement DeepMind had *pre-registered before anyone had a counterexample*, and I called that the gold standard. Nothing here was pre-registered. The statements and the answers arrived in the same commit.\n\nOne commit, incidentally. `openai/ten-proofs`\n\nhas exactly one, pushed today, with the commit message `.`\n\n. There is no history to inspect: no way to see how the Lean evolved, how much was model output and how much human repair, or whether any statement was amended mid-flight the way DeepMind had to amend “density” to “lower density” on #125 after their agent proved the wrong reading.\n\n## The artifact that went backwards\n\nHere is the thing nobody covering this release is going to notice, and it is the part that worries me most.\n\nIn May, OpenAI released the model’s rewritten chain of thought for the unit-distance proof, and I spent a section of that post arguing it was the most valuable document in the pile — precisely because it was hard to fake and hard to retrieve. Page after page of failing in specific, recognizable ways: the Boolean hypercube giving only , the rational point collapsing to the divisor-function picture, the Dirichlet units killed by a clean observation about relative unit rank in CM fields. You cannot retrieve that from a database and you cannot cheaply invent it.\n\nToday’s equivalent is a 62-page document called *How the Ideas Came Together*, and its abstract says what it is:\n\nThese notes were written by an AI model that read the original chains of thought together with the resulting mathematical papers and writeups. For each problem, the model reconstructs how the proof came together…\n\nIt is a reconstruction, written after the fact, by a model that already knew the answer, aimed explicitly at “a readable, high-level narrative.” Across all 62 pages there is not one occurrence of “I tried” or “dead end.” The voice is third-person expository throughout.\n\nTo be fair to it, the reconstruction does report checkable failures. §2.2 records an attractive guess at a Krawtchouk coefficient and kills it with a small counterexample: at , , degrees through , the guess yields a bound of on the even-parity code. That code has words and , so the guess is wrong. I checked; it holds.\n\nBut a dead end *reported* is not a dead end *witnessed*. The proof artifact got dramatically stronger in this release and the reasoning artifact got weaker, and they went in opposite directions on the same morning. If you had been relying on chains of thought as evidence — and in May I was — the ground just moved.\n\n## The vacancy\n\nSo where does this leave the argument I’ve been making since May.\n\nThe compiler holds. That is not in doubt anymore, and today is the strongest evidence yet: ten problems open for decades, across eight subfields, certified sorry-free against three axioms, checkable by a stranger on consumer hardware in under an hour, with no institutional standing required and nobody’s weekend consumed. In May the credibility of a single result rested on nine of the people on Earth qualified to check it. Today the credibility of ten results rests on a compile and a manifest hash. That is the thing I said we needed, and it exists, and it works.\n\nAnd every ounce of remaining doubt has been squeezed into 1,700 lines of definitions that a human being has to read, of which OpenAI wrote all of them, against a registry that hasn’t been updated and a formalization repository that doesn’t have the problems.\n\nThe regress didn’t end. In May it moved from proofs to statements, and I wrote that translation was where the watchmen went to hide. What happened today is that the statements acquired an owner with an interest in the answer. That is not fraud and I don’t think it’s even bad faith — comparator’s whole design, the axiom allowlists, the challenge/solution split, the fact that the mathlib pin is genuine, all of it reads like people trying hard to be checkable. But “trying hard to be checkable” is a property of the vendor, and the entire point of a certificate was to stop needing properties of the vendor.\n\nWhat’s missing is not more compute or a better model. It is roughly a hundred lines of Lean per problem, written by somebody with no stake in the answer, before the answer exists. That is unglamorous work. Nobody gets a press release for it. It is also, right now, the only remaining place where a wrong result could survive contact with the machine — and there is a queue of ten sitting in a registry that still says OPEN.\n\nI’m going to go write #146 and #180. They’re clean transcriptions with an actual conjecture to pin, and I can state them without having looked at anyone’s answer. #183 I can’t, twice over: I’ve already read OpenAI’s file, and “Determine the limit” needs a hole where the answer goes and a conversation about what shape of answer counts.\n\nThat conversation is the interesting one, and it isn’t a technical problem. Somebody has to decide what the question was.\n\n*Everything above is reproducible: git clone https://github.com/openai/ten-proofs, lake exe cache get, lake build All, then #print axioms on the theorem names listed in the ComparatorChallenges/*.json files. If you get anything other than [propext, Classical.choice, Quot.sound] on all 38, I want to hear about it more than I want to be right.*\n\n*Two things I did not run, in the interest of not overclaiming: comparator’s landrun sandbox, which is Linux-only, and the nanoda second-kernel re-check, which all twelve configurations request. I also compiled the solution modules before checking them, which comparator’s README explicitly warns against. And my reading of the definitions is a reading, not a proof of anything.*\n\n*This post was written with Claude, which built the repository, ran the axiom check, and read the challenge files alongside me. Same disclosure as last time, same instruction: don’t trust it, and don’t trust me. Run the four commands.*\n\n## Footnotes\n\n-\nOpenAI,\n\n(August 1, 2026). Paper:*Ten advances in mathematics and theoretical computer science*[ten-proofs-oai.pdf](https://cdn.openai.com/pdf/ten-proofs-oai.pdf), 249 pages. Reasoning walkthroughs:[reasoning-walkthroughs.pdf](https://cdn.openai.com/pdf/reasoning-walkthroughs.pdf), 62 pages. Lean certificates:[github.com/openai/ten-proofs](https://github.com/openai/ten-proofs).[↩](#user-content-fnref-openai-aug) -\nT. F. Bloom, Erdős Problem #146,\n\n[https://www.erdosproblems.com/146](https://www.erdosproblems.com/146), accessed 2026-08-01. Conjectured by Erdős and Simonovits.[↩](#user-content-fnref-bloom146) -\nT. F. Bloom, Erdős Problem #180,\n\n[https://www.erdosproblems.com/180](https://www.erdosproblems.com/180), accessed 2026-08-01. A problem of Erdős and Simonovits.[↩](#user-content-fnref-bloom180) -\nT. F. Bloom, Erdős Problem #183,\n\n[https://www.erdosproblems.com/183](https://www.erdosproblems.com/183), accessed 2026-08-01.[↩](#user-content-fnref-bloom183)", "url": "https://wpnews.pro/news/who-writes-the-question", "canonical_source": "https://korbonits.com/blog/2026-08-01-who-writes-the-question/", "published_at": "2026-08-01 00:00:00+00:00", "updated_at": "2026-08-01 22:15:31.095558+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-research", "ai-products", "ai-tools"], "entities": ["OpenAI", "Astra", "Lean 4", "mathlib4", "GitHub", "Connes"], "alternates": {"html": "https://wpnews.pro/news/who-writes-the-question", "markdown": "https://wpnews.pro/news/who-writes-the-question.md", "text": "https://wpnews.pro/news/who-writes-the-question.txt", "jsonld": "https://wpnews.pro/news/who-writes-the-question.jsonld"}}