<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://realopjt.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://realopjt.github.io/" rel="alternate" type="text/html" /><updated>2026-10-08T03:21:43+00:00</updated><id>https://realopjt.github.io/feed.xml</id><title type="html">Checking AI maths</title><subtitle>Independent checks of results from OpenAI&apos;s October 2026 maths release.</subtitle><author><name>realopjt</name></author><entry><title type="html">Checking an AI’s maths, part 2</title><link href="https://realopjt.github.io/2026/10/07/checking-an-ais-maths-part-2.html" rel="alternate" type="text/html" title="Checking an AI’s maths, part 2" /><published>2026-10-07T12:00:00+00:00</published><updated>2026-10-07T12:00:00+00:00</updated><id>https://realopjt.github.io/2026/10/07/checking-an-ais-maths-part-2</id><content type="html" xml:base="https://realopjt.github.io/2026/10/07/checking-an-ais-maths-part-2.html"><![CDATA[<p><strong>Short version:</strong> I checked a second result from OpenAI’s AI maths release. This one rests on over a million number comparisons, some with numbers 25 digits long. Every single comparison comes out the way the paper says.</p>

<h2 id="the-puzzle-in-plain-english">The puzzle, in plain English</h2>

<p>Imagine two ways of building with Lego.</p>

<ul>
  <li><strong>Way 1:</strong> make 6 towers, each b bricks tall, and put them in a box.</li>
  <li><strong>Way 2:</strong> make b towers, each 6 bricks tall, and put them in a box.</li>
</ul>

<p>Same number of bricks either way. In 1950 a mathematician called Foulkes asked: if b is at least 6, does everything you can build the first way also fit inside what you can build the second way?</p>

<p>(In the real problem the “bricks” are polynomials, and “fit inside” has a precise meaning, but that’s the shape of it.)</p>

<p>It had been proved for 2, 3, 4 and 5 towers. OpenAI’s paper claims to prove it for 6.</p>

<h2 id="how-the-proof-works">How the proof works</h2>

<p>The proof has three layers:</p>

<ol>
  <li>For b from 6 to 25, a computer compares the two sides directly, piece by piece.</li>
  <li>For b up to 149, it uses computer-generated shortcuts.</li>
  <li>Beyond that, it’s a written argument.</li>
</ol>

<p>I checked layer 1.</p>

<h2 id="what-i-found">What I found</h2>

<p><strong>It holds up.</strong> For every b from 6 to 25, the second way always has at least as much as the first. No exceptions.</p>

<ul>
  <li><strong>I re-ran OpenAI’s own code.</strong> It matched their published results exactly.</li>
  <li><strong>I wrote my own program from scratch,</strong> which counts everything a different way and checks every single case. OpenAI’s code uses shortcuts to skip most of them. At b = 25 mine compared 1,229,120 pieces, some involving counts 25 digits long.</li>
  <li><strong>It passed sanity checks</strong> against answers already known from textbooks.</li>
</ul>

<p>The biggest cases ran on GitHub’s own servers, with <a href="https://github.com/realopjt/foulkes-sixth-power-check/actions/runs/37636354843">public logs</a> anyone can inspect.</p>

<h2 id="did-i-find-a-different-solution">Did I find a different solution?</h2>

<p>No. The question and the right answer are fixed. Running a second, independent program is like having a second accountant redo the books from the receipts: if both get the same total, a mistake in the first one is very unlikely. If we’d disagreed, that would have meant an error somewhere.</p>

<h2 id="what-this-doesnt-prove">What this doesn’t prove</h2>

<p>Only layer 1. Layers 2 and 3 still need mathematicians to check them.</p>

<p>All code and results: <a href="https://github.com/realopjt/foulkes-sixth-power-check">github.com/realopjt/foulkes-sixth-power-check</a>. Part 1 is <a href="/2026/10/07/checking-an-ais-maths.html">here</a>. I did this with help from Claude (Anthropic). The maths is OpenAI’s.</p>

<hr />

<h2 id="for-mathematicians">For mathematicians</h2>

<p><strong>Claim checked.</strong> The base interval of <a href="https://github.com/openai/math/blob/main/preprints/Foulkes-Conjecture-for-the-Sixth-Symmetric-Power-September-25-2026/main.pdf">Foulkes’ Conjecture for the Sixth Symmetric Power</a>: for 6 ≤ b ≤ 25, [s_λ] h_b[h_6] ≥ [s_λ] h_6[h_b] for every λ ⊢ 6b (only ℓ(λ) ≤ 6 matters, since h_6[h_b] has no other constituents). Equivalently Sym⁶(Sym^b V) ↪ Sym^b(Sym⁶ V) in that range.</p>

<p><strong>Re-run.</strong> <code class="language-plaintext highlighter-rouge">verify_computations.py --run</code> (unchanged, g++ 13.3, Boost 1.83) passes and matches all 62 reference output rows.</p>

<p><strong>Independent checker.</strong> Rust, exact 128-bit integers with overflow checks. Unlike the paper’s Schur-basis Newton recurrences with signed lookups and an upper bound U to skip most partitions, it works in the weight basis: Newton’s identity j·ch Sym^j W = Σ_k ψ^k(W)·ch Sym^{j−k} W on dominant-weight multiplicities, with (ψ^k(W)·χ)(μ) = Σ_{s ∈ wt(W)} χ(sort(μ − k·s)), then Schur multiplicities by the Weyl alternation c(λ) = Σ_{w ∈ S₆} sgn(w) K(λ + δ − wδ). Every partition is computed exactly; no bound is used.</p>

<p><strong>Checks.</strong> Σ_λ c(λ)·dim₆(λ) equals dim Sym⁶(Sym^b ℂ⁶) and dim Sym^b(Sym⁶ ℂ⁶) at every b; no negative multiplicities; A = B at b = 6. Self-tests: Thrall’s h₂[h_q] (q ≤ 12), h₃[h₂], h_q[h₂] (q ≤ 8), h₃[h₃].</p>

<p><strong>Ties.</strong> Our count of λ with A = B (including A = B = 0) exceeds OpenAI’s table by 4 at b = 6, 3 at b = 7, 8 and 2 for every b from 9 to 25. Their table counts ties only among partitions their U-test could not settle, so this is expected.</p>

<p><strong>Status.</strong> The full base interval b = 6 to 25 is done, zero violations; at b = 25 we check 1,229,120 partitions, matching the paper’s count for its largest complete level. The certificate layer (26 ≤ b ≤ 149) and the general argument are not checked.</p>]]></content><author><name>realopjt</name></author><summary type="html"><![CDATA[Short version: I checked a second result from OpenAI’s AI maths release. This one rests on over a million number comparisons, some with numbers 25 digits long. Every single comparison comes out the way the paper says.]]></summary></entry><entry><title type="html">Checking an AI’s maths</title><link href="https://realopjt.github.io/2026/10/07/checking-an-ais-maths.html" rel="alternate" type="text/html" title="Checking an AI’s maths" /><published>2026-10-07T09:00:00+00:00</published><updated>2026-10-07T09:00:00+00:00</updated><id>https://realopjt.github.io/2026/10/07/checking-an-ais-maths</id><content type="html" xml:base="https://realopjt.github.io/2026/10/07/checking-an-ais-maths.html"><![CDATA[<p><strong>Short version:</strong> OpenAI’s AI claims to have proved a maths puzzle that’s been open since 2012. Part of that proof is a huge computer calculation. I checked the calculation with my own program, built from scratch. It came out right.</p>

<h2 id="why-bother">Why bother?</h2>

<p>On 6 October 2026, OpenAI released 722 maths papers written by an AI. Some claim to solve problems that experts have been stuck on for decades.</p>

<p>The catch: almost none of it has been checked by humans yet. Writing proofs is now fast. Checking them is slow. That’s the bottleneck.</p>

<p>I’m not a mathematician. But some of these proofs lean on a big computer calculation, and a calculation is something anyone careful can re-check. So I picked one.</p>

<h2 id="the-puzzle-in-plain-english">The puzzle, in plain English</h2>

<p>Take a deck of cards and think about all the ways you can shuffle it.</p>

<p>Mathematicians study shuffles by watching what they do to things. The simplest example is the cards themselves: a shuffle moves each card to a new place. You can also watch what a shuffle does to <em>pairs</em> of cards, or to more complicated patterns. Each of these is a different way of looking at the same shuffles.</p>

<p>Some of these views can be split into smaller, separate parts that never mix, and some can’t be split any further. The ones that can’t be split are the basic <strong>building blocks</strong>. Every other view is made of them, a bit like every whole number is made of primes. A deck of a given size has a fixed list of building blocks.</p>

<p><strong>Combining a building block with itself</strong> means looking at pairs instead of single items. With 3 cards (A, B, C), instead of watching where each card goes, you watch where every <em>pair</em> goes: (A,A), (A,B), (B,C) and so on, 9 pairs in all. A shuffle that sends A to B and B to C turns the pair (A,B) into (B,C). This bigger collection then breaks back down into building blocks.</p>

<p><strong>The puzzle:</strong> for almost every deck size, is there one building block that, combined with itself this way, breaks down into a list containing <em>every</em> building block at least once?</p>

<p>The paper says yes, for every deck size except 2, 4 and 9, where it is known to fail. For big decks it gives a written argument. For decks up to 64 cards it relies on a computer to check each case, and that computer part is what I checked.</p>

<h2 id="what-i-found">What I found</h2>

<p><strong>It holds up.</strong> Every one of the 61 deck sizes checks out.</p>

<ul>
  <li><strong>I re-ran OpenAI’s own code.</strong> Same answers.</li>
  <li><strong>I wrote my own program from scratch,</strong> in a different language and using a different method. Same answers. For a 64-card deck, that meant confirming all 1,741,630 ingredients appear.</li>
  <li><strong>I filled a gap.</strong> OpenAI’s records said “it works” for each deck size, but never said <em>which</em> ingredient does the job. I found and published all 61.</li>
  <li><strong>A third check</strong> using plain whole-number arithmetic agreed for smaller decks.</li>
</ul>

<h2 id="what-this-doesnt-prove">What this doesn’t prove</h2>

<p>I checked the computer part, not the written argument for big decks. That still needs real mathematicians to read it.</p>

<h2 id="why-it-matters">Why it matters</h2>

<p>AI can now produce maths faster than people can check it. Re-checking is how science decides what’s true, and some of it doesn’t need a PhD. There are plenty more results in OpenAI’s release that could be checked the same way.</p>

<p>All the code and results are public: <a href="https://github.com/realopjt/tensor-square-finite-check">github.com/realopjt/tensor-square-finite-check</a>. I did this with help from Claude (Anthropic). The maths itself is OpenAI’s.</p>

<hr />

<h2 id="for-mathematicians">For mathematicians</h2>

<p><strong>Claim checked.</strong> The finite-range proposition of <a href="https://github.com/openai/math/blob/main/preprints/Universal-Tensor-Squares-for-Symmetric-Groups-September-24-2026/main.pdf">Universal Tensor Squares for Symmetric Groups</a>: for every 1 ≤ n ≤ 64 with n ∉ {2, 4, 9} there is a self-conjugate λ ⊢ n with g(λ, λ, ν) &gt; 0 for every ν ⊢ n (the tensor square conjecture of Pak, Panova and Vallejo in that range).</p>

<p><strong>Witnesses.</strong> OpenAI’s log records only exit statuses. I recovered the witness λ for each n by adding a print statement to a copy of their search (no change to its logic), e.g. λ = (13, 10, 8, 7, 6, 6, 4, 3, 2, 2, 1, 1, 1) at n = 64. Full list in the repo.</p>

<p><strong>Independent checker.</strong> Rust, computing g(λ, λ, ν) = Σ_ρ χ^λ(ρ)² χ^ν(ρ) / z_ρ for all ν at once, modulo 2⁶¹ − 1 and 998244353 (OpenAI used 10⁹+7 and 10⁹+9). Differences from their implementation: rank-based partition indexing instead of hashed beta-set masks; border strips found from cells of hook length k and removed with the rim-hook formula instead of abacus bead moves; equal parts of ρ grouped by multiplicity with weight 1/(k^m m!) and a Horner scheme; dimensions from the hook length formula. Every target is nonzero modulo each prime separately. Built-in checks: Σ_ν g·dim ν = (dim λ)², g(λ, λ, (n)) = 1, g(λ, λ, (1ⁿ)) = 1.</p>

<p><strong>Exact cross-check.</strong> A separate Python implementation (Murnaghan–Nakayama on cell sets, exact rationals) matches the checker coefficient for coefficient for n ≤ 22, and confirms no covering square exists for n = 2, 4, 9.</p>

<p><strong>Scope.</strong> Finite range only. The large-n argument is not checked.</p>]]></content><author><name>realopjt</name></author><summary type="html"><![CDATA[Short version: OpenAI’s AI claims to have proved a maths puzzle that’s been open since 2012. Part of that proof is a huge computer calculation. I checked the calculation with my own program, built from scratch. It came out right.]]></summary></entry></feed>