Plectis Atlas
Search

↑ and ↓ move, Enter opens, Esc closes.

Lean statement

Partition Principle without Choice from a ground model

Lean is a language for mathematical statements and proofs that a computer can verify. This page shows one statement file from OpenAI’s release, possible paper matches and independent reports. The code-like names below identify the definitions or theorems selected by the proof-verification settings.

Theorem selected for verification: OAI.PartitionPilot.Forcing.TransitiveGround.exists_model_partitionPrinciple_without_choice

Lean statement file: PartitionPrinciple.leanShow on the mapFamily 244. OpenAI lists this as a main result in its Lean catalogue.

The Lean statement

The lines of the Lean statement that state the theorem, then the definitions in the file that it uses.

theorem exists_model_partitionPrinciple_without_choice    (pairing : Realize M.sets SetFormula.pairing Fin.elim0)    (unions : Realize M.sets SetFormula.union Fin.elim0)    (powers : Realize M.sets powerSet Fin.elim0) (separation : SeparationSchema M.sets)    (collection : CollectionSchema M.sets) (infinite : Realize M.sets infinity Fin.elim0)    (choice : Realize M.sets SetFormula.choice Fin.elim0)    (small : M.sets.Countable)    {K : ZFSet.{u}} (hK : K ∈ M.sets) (standard : GroundStandardInaccessible M K) :    ∃ N : TransitiveGround.{u}, M.sets ⊆ N.sets ∧ ZFRealization N.sets ∧      Realize N.sets partitionPrinciple Fin.elim0 ∧      ¬ Realize N.sets SetFormula.choice Fin.elim0 := by  sorry

A Lean statement states the theorem and leaves its proof as sorry on purpose. OpenAI’s proof is in a separate solution module, and a program called Comparator checks that proof against this statement.

Definitions needed to read it

Local definitions the statement names, followed through the definitions they name in turn. The match is by name in the source text, so a name reached only through notation can be missed; the full file is below.

  • inductive type OAI.PartitionPilot.Forcing.SetFormula line 9

    inductive SetFormula : Nat → Type  | equal {n} : Fin n → Fin n → SetFormula n  | mem {n} : Fin n → Fin n → SetFormula n  | neg {n} : SetFormula n → SetFormula n  | conj {n} : SetFormula n → SetFormula n → SetFormula n  | all {n} : SetFormula (n + 1) → SetFormula n
  • definition OAI.PartitionPilot.Forcing.SetFormula.extend line 18

    def extend {A : Type u} {n : Nat} (x : A) (env : Fin n → A) : Fin (n + 1) → A :=  Fin.cases x env
  • definition OAI.PartitionPilot.Forcing.SetFormula.Realize line 21

    def Realize (U : Set ZFSet.{u}) : {n : Nat} → SetFormula n → (Fin n → ZFSet.{u}) → Prop  | _, .equal i j, env => env i = env j  | _, .mem i j, env => env i ∈ env j  | _, .neg φ, env => ¬ Realize U φ env  | _, .conj φ ψ, env => Realize U φ env ∧ Realize U ψ env  | _, .all φ, env => ∀ x ∈ U, Realize U φ (extend x env)
  • definition OAI.PartitionPilot.Forcing.SetFormula.ex line 28

    def ex {n : Nat} (φ : SetFormula (n + 1)) : SetFormula n := .neg (.all (.neg φ))
  • definition OAI.PartitionPilot.Forcing.SetFormula.disj line 30

    def disj {n : Nat} (φ ψ : SetFormula n) : SetFormula n := .neg (.conj (.neg φ) (.neg ψ))
  • definition OAI.PartitionPilot.Forcing.SetFormula.imp line 32

    def imp {n : Nat} (φ ψ : SetFormula n) : SetFormula n := .neg (.conj φ (.neg ψ))
  • inductive type OAI.PartitionPilot.Forcing.BoundedFormula line 36

    inductive BoundedFormula : Nat → Type  | equal {n} : Fin n → Fin n → BoundedFormula n  | mem {n} : Fin n → Fin n → BoundedFormula n  | neg {n} : BoundedFormula n → BoundedFormula n  | conj {n} : BoundedFormula n → BoundedFormula n → BoundedFormula n  | allMem {n} : Fin n → BoundedFormula (n + 1) → BoundedFormula n
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.exMem line 51

    def exMem {n} (b : Fin n) (φ : BoundedFormula (n + 1)) : BoundedFormula n :=  .neg (.allMem b (.neg φ))
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.toFormula line 54

    def toFormula : {n : Nat} → BoundedFormula n → SetFormula n  | _, .equal i j => .equal i j  | _, .mem i j => .mem i j  | _, .neg φ => .neg φ.toFormula  | _, .conj φ ψ => .conj φ.toFormula ψ.toFormula  | _, .allMem b φ => .all (SetFormula.imp (.mem 0 b.succ) φ.toFormula)
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.singletonFormula line 61

    def singletonFormula {n} (z x : Fin n) : BoundedFormula n :=  .conj (.mem x z) (.allMem z (.equal 0 x.succ))
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.unorderedPairFormula line 64

    def unorderedPairFormula {n} (z x y : Fin n) : BoundedFormula n :=  .conj (.mem x z) (.conj (.mem y z) (.allMem z (disj (.equal 0 x.succ) (.equal 0 y.succ))))
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.orderedPairFormula line 67

    def orderedPairFormula {n} (z x y : Fin n) : BoundedFormula n :=  exMem z (.conj (singletonFormula 0 x.succ)    (exMem z.succ (.conj (unorderedPairFormula 0 x.succ.succ y.succ.succ)      (unorderedPairFormula z.succ.succ 1 0))))
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.pairMembershipFormula line 72

    def pairMembershipFormula {n} (x y r : Fin n) : BoundedFormula n :=  exMem r (orderedPairFormula 0 x.succ y.succ)
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.relationBetweenFormula line 75

    def relationBetweenFormula {n} (a b f : Fin n) : BoundedFormula n :=  .allMem f (exMem a.succ (exMem b.succ.succ (orderedPairFormula 2 1 0)))
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.functionFormula line 78

    def functionFormula {n} (a b f : Fin n) : BoundedFormula n :=  .conj (relationBetweenFormula a b f)    (.allMem a (exMem b.succ (.conj (pairMembershipFormula 1 0 f.succ.succ)      (.allMem b.succ.succ (imp (pairMembershipFormula 2 0 f.succ.succ.succ) (.equal 0 1))))))
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.nonemptyFormula line 83

    def nonemptyFormula {n} (x : Fin n) : BoundedFormula n := exMem x (.equal 0 0)
  • definition OAI.PartitionPilot.Forcing.BoundedFormula.choiceFunctionFormula line 85

    def choiceFunctionFormula {n} (a f : Fin n) : BoundedFormula n :=  .conj (.allMem f (exMem a.succ (exMem 0 (orderedPairFormula 2 1 0))))    (.allMem a (exMem 0 (.conj (pairMembershipFormula 1 0 f.succ.succ)      (.allMem 1 (imp (pairMembershipFormula 2 0 f.succ.succ.succ) (.equal 0 1))))))
  • structure OAI.PartitionPilot.Forcing.TransitiveGround line 92

    structure TransitiveGround where  sets : Set ZFSet.{u}  transitive : ∀ {x y}, x ∈ sets → y ∈ x → y ∈ sets
  • structure OAI.PartitionPilot.Forcing.InjectionCode line 96

    structure InjectionCode (D N f : ZFSet.{u}) : Prop where  function : ZFSet.IsFunc D N f  injective : ∀ x y z, ZFSet.pair x z ∈ f → ZFSet.pair y z ∈ f → x = y
  • definition OAI.PartitionPilot.Forcing.TransitiveGround.groundEmbeddable line 106

    def groundEmbeddable (D N : ZFSet.{u}) : Prop := ∃ f ∈ M.sets, InjectionCode D N f
  • definition OAI.PartitionPilot.Forcing.setTransitive line 110

    def setTransitive (x : ZFSet.{u}) : Prop := ∀ y ∈ x, ∀ z ∈ y, z ∈ x
  • definition OAI.PartitionPilot.Forcing.ordinalSetProperty line 112

    def ordinalSetProperty (x : ZFSet.{u}) : Prop :=  setTransitive x ∧ ∀ y ∈ x, setTransitive y
  • definition OAI.PartitionPilot.Forcing.TransitiveGround.groundPower line 121

    noncomputable def groundPower (B : ZFSet.{u}) : ZFSet.{u} :=  ZFSet.sep (fun p => p ∈ M.sets) (ZFSet.powerset B)
  • definition OAI.PartitionPilot.Forcing.GroundBelow line 126

    def GroundBelow (M : TransitiveGround.{u}) (A K : ZFSet.{u}) : Prop :=  ∃ β ∈ K, M.groundEmbeddable A β

24 more definitions are reached the same way; the full file lists them.

Possible paper match, with no recorded review

Atlas selected this possible match by comparing words in the Lean statement with every statement in the family. No review of whether the statements mean the same thing is recorded.

Words of the Lean statement, its names split into words, that also appear in the theorem: formula, relation, axiom, transitive, ground, zf, choice, model and one more. Shared only with the release’s name for the Lean statement or OpenAI’s note on it: internal and externally.

Theorem 3.3 of The Partition Principle does not imply Choice

Theorem (The symmetric-model theorem)

The symmetric forcing relation is definable formula by formula in V, and it forces every axiom instance of full pure-set \ZF. If V is externally transitive, the evaluated class W is a transitive model of that theory, with

V\subseteq W\subseteq V[F][H], \qquad \Ord^W=\Ord^{V[F][H]}.

The truth lemma holds for this evaluated model. Over an arbitrary countable choice ground, it holds for the symmetric quotient of internal names described in Section sec:metatheory.

Section 3, Product forcing and support locality Read it in the paper TeX source, line 237
Show the TeX
The symmetric forcing relation is definable formula by formula in
\(V\), and it forces every axiom instance of full pure-set \(\ZF\).
If \(V\) is externally transitive, the evaluated class \(W\) is
a transitive model of that theory, with
\[
 V\subseteq W\subseteq V[F][H],
 \qquad \Ord^W=\Ord^{V[F][H]}.
\]
The truth lemma holds for this evaluated model.  Over an arbitrary
countable choice ground, it holds for the symmetric quotient of internal
names described in Section~\ref{sec:metatheory}.

Other possible paper matches, closest wording first

  • Proposition 3.6 of The Partition Principle does not imply Choice. Words of the Lean statement, its names split into words, that also appear in the theorem: bound, surjection, nonempty and ordinal.
  • Theorem 1.2 of The Partition Principle does not imply Choice. Words of the Lean statement, its names split into words, that also appear in the theorem: transitive, neg, zf, model and countable. Found in the paper’s title, which its main theorem states: principle, partition and choice.
  • Theorem 7.5 of The Partition Principle does not imply Choice. Words of the Lean statement, its names split into words, that also appear in the theorem: omega, ground, function, ordinals, neg, zf and three more. Shared only with the release’s name for the Lean statement or OpenAI’s note on it: constructed, construction, resulting and contains.
  • Proposition 3.7 of The Partition Principle does not imply Choice. Words of the Lean statement, its names split into words, that also appear in the theorem: nonempty, ordinal, function, choice and model.
  • Theorem 1.1 of The Partition Principle does not imply Choice. Words of the Lean statement, its names split into words, that also appear in the theorem: zf and neg. Found in the paper’s title, which its main theorem states: principle, partition and choice.
  • Theorem 2.2 of The Partition Principle does not imply Choice. Words of the Lean statement, its names split into words, that also appear in the theorem: finite, properties, realized, successor and countable. Shared only with the release’s name for the Lean statement or OpenAI’s note on it: containing.

How Atlas selects possible matches: it compares words in the Lean statement with every statement in the family. It also splits Lean names into words. The release’s label and note receive less weight; a main theorem wins a close match. If the Lean wording yields no clear match, Atlas uses the catalogue description. This selects passages to compare; it does not establish that they mean the same thing.

Reported Comparator runs

One independent group reports that Comparator accepted a run for this Lean statement file: Carlos Toledo’s cert-machine. Each group reports its own Comparator run for this statement file. Atlas has not repeated the runs.

For a configured theorem, Comparator tests whether OpenAI’s proof proves the exact Lean statement. Some files instead configure definitions for comparison by name and type. Acceptance does not establish that the statement means the same thing as the paper’s theorem.

Carlos Toledo’s cert-machine

How they ran it, in their words

Every Comparator challenge re-run on Linux with nanoda switched on, decided by a preregistered rule; every family’s challenge statements read against OpenAI’s headline, clause by clause. Decider: Comparator (leanprover/comparator d03acab1 = tag v4.34.0, built with the release’s toolchain v4.34.1), lean4export 076e8e57, landrun 811cfff5, nanoda_lib 3a240721 — on GitHub’s Linux runners (.github/workflows/openai-math-kernel.yml), one j…

  • Accepted Their term: “CERTIFIED”.

    Re-run through Comparator with the independent nanoda kernel switched on: Lean’s kernel and nanoda both accept OpenAI’s solution.

    Reported 10 October 2026, at the release version shown here. Original verification report

What an accepted Comparator run would establish

If Comparator is run under this configuration and accepts, the solution proves the configured theorem using only the allowed axioms, and the Lean kernel accepts every step.

This configuration lists no definition holes, so every definition the statement uses is compared as it is written in this file.

Allowed axioms: propext, Quot.sound, Classical.choice

Acceptance leaves open whether the Lean statement means the same thing as the paper’s theorem, whether the paper’s other claims are correct, and whether the result is new. Those questions require comparing the definitions and statements, reviewing the paper’s arguments, and reading the earlier literature.

Do family 244’s Lean statements express the advertised result?

These assessments compare all the family’s Lean statements with the whole result OpenAI describes in its catalogue. They do not assess this statement alone. Each group uses its own published rules.

Neither group finds that the Lean statements express or imply the whole advertised result. They describe what the statements express in different terms.

  • MathVet

    Finds part of it stated, or a narrower or weaker statement Their term: “partial”.

    Only a special case is stated, or a co-equal headline claim has no challenge statement. Their record

    Their note: Stated: PartitionConsistency.main_consistency : Consistent ZF → Consistent (ZF ∪ {PP, ACwo, ¬AC}) (a hand-coded first-order Derives calculus, full ZF with arbitrary Separation/Replacement instances, PP = every internal surjection X ↠ Y yields an internal injection Y ↪ X, ACwo = choice for ordinal-indexed families), which is the summary's first two claims. The third claim, a transitive symmetric extension of any countable transitive model of ZFC with no new countable sequences, appears only as exists_model_partitionPrinciple_without_choice and needs an extra hypothesis (an internal strongly inaccessible K in the ground model, docs: 'containing an internal strongly inaccessible cardinal') and its conclusion lacks ordinal-indexed choice and the no-new-sequences property (docs: 'stronger transitive-model preservation assertions are outside').

    Definitions the group asks readers to compare with the paper: Hand-written proof theory and set theory: Formula, Derives (natural deduction), Consistent T := ∀ n, ¬ Derives (T.at n) .bot, ZF := {p | IsZFAxiom p} with separation/replacement coded by variable-index arithmetic, PP, AC, ACwo. The theorem is an implication from Consistent ZF, so a coding error that made the encoded ZF inconsistent would make it vacuous; PartitionPrinciple uses its own SetFormula/Realize semantics on ZFSet. (axiom_files hit for LocalRecords.lean is a doc-comment false positive.)

  • Carlos Toledo’s cert-machine

    Finds part of it stated, or a narrower or weaker statement Their term: “NARROWER — DECLARED”.

    The challenge statements state less than the headline, and OpenAI’s Lean note says so. Their record

    Their note: In the countable-transitive-model clause, the Lean adds an internal strongly inaccessible cardinal to the hypotheses and drops from the conclusion ACwo-in-N, "symmetric extension" and "no new countable sequences of ground-model elements". The relative-consistency clauses are fully stated.

Read the complete assessments on the family page.

OpenAI’s own note on what this Lean statement covers

“The linked model-construction result also constructs a transitive model of the Partition Principle without Choice from an externally countable transitive ground model satisfying the stated axioms, including Choice, and containing an internal strongly inaccessible cardinal. The paper's stronger transitive-model preservation assertions are outside that selected construction.”

An AI agent drafted an interpretation of that note, classifying this statement as “states a weaker form of a paper’s theorem”. No human review of the draft is recorded.

Supporting material

The complete Lean statement file

277 lines, copied from release version fd4aeeb. A name defined in this file links to its line; pointing at the name shows its definition.

Declared in this fileOpenAI’s library at fd4aeebOther linked names open the current documentation for Mathlib, Lean’s mathematical library.

Links in the file: 203 to its own declarations, 86 to Mathlib’s documentation. 51 declared names also link to the same declaration in OpenAI’s library. OpenAI uses Mathlib version d13f23b. The linked documentation describes the current version, so names that have since changed may be missing there.

import Mathlibnamespace OAInamespace PartitionPilot.Forcinguniverse uinductive SetFormula : Nat → Type  | equal {n} : Fin n → Fin n → SetFormula n  | mem {n} : Fin n → Fin n → SetFormula n  | neg {n} : SetFormula n → SetFormula n  | conj {n} : SetFormula n → SetFormula n → SetFormula n  | all {n} : SetFormula (n + 1) → SetFormula nnamespace SetFormuladef extend {A : Type u} {n : Nat} (x : A) (env : Fin n → A) : Fin (n + 1) → A :=  Fin.cases x envdef Realize (U : Set ZFSet.{u}) : {n : Nat} → SetFormula n → (Fin n → ZFSet.{u}) → Prop  | _, .equal i j, env => env i = env j  | _, .mem i j, env => env i ∈ env j  | _, .neg φ, env => ¬ Realize U φ env  | _, .conj φ ψ, env => Realize U φ env ∧ Realize U ψ env  | _, .all φ, env => ∀ x ∈ U, Realize U φ (extend x env)def ex {n : Nat} (φ : SetFormula (n + 1)) : SetFormula n := .neg (.all (.neg φ))def disj {n : Nat} (φ ψ : SetFormula n) : SetFormula n := .neg (.conj (.neg φ) (.neg ψ))def imp {n : Nat} (φ ψ : SetFormula n) : SetFormula n := .neg (.conj φ (.neg ψ))end SetFormulainductive BoundedFormula : Nat → Type  | equal {n} : Fin n → Fin n → BoundedFormula n  | mem {n} : Fin n → Fin n → BoundedFormula n  | neg {n} : BoundedFormula n → BoundedFormula n  | conj {n} : BoundedFormula n → BoundedFormula n → BoundedFormula n  | allMem {n} : Fin n → BoundedFormula (n + 1) → BoundedFormula nnamespace BoundedFormulaopen SetFormuladef imp {n} (φ ψ : BoundedFormula n) : BoundedFormula n := .neg (.conj φ (.neg ψ))def disj {n} (φ ψ : BoundedFormula n) : BoundedFormula n := .neg (.conj (.neg φ) (.neg ψ))def exMem {n} (b : Fin n) (φ : BoundedFormula (n + 1)) : BoundedFormula n :=  .neg (.allMem b (.neg φ))def toFormula : {n : Nat} → BoundedFormula n → SetFormula n  | _, .equal i j => .equal i j  | _, .mem i j => .mem i j  | _, .neg φ => .neg φ.toFormula  | _, .conj φ ψ => .conj φ.toFormula ψ.toFormula  | _, .allMem b φ => .all (SetFormula.imp (.mem 0 b.succ) φ.toFormula)def singletonFormula {n} (z x : Fin n) : BoundedFormula n :=  .conj (.mem x z) (.allMem z (.equal 0 x.succ))def unorderedPairFormula {n} (z x y : Fin n) : BoundedFormula n :=  .conj (.mem x z) (.conj (.mem y z) (.allMem z (disj (.equal 0 x.succ) (.equal 0 y.succ))))def orderedPairFormula {n} (z x y : Fin n) : BoundedFormula n :=  exMem z (.conj (singletonFormula 0 x.succ)    (exMem z.succ (.conj (unorderedPairFormula 0 x.succ.succ y.succ.succ)      (unorderedPairFormula z.succ.succ 1 0))))def pairMembershipFormula {n} (x y r : Fin n) : BoundedFormula n :=  exMem r (orderedPairFormula 0 x.succ y.succ)def relationBetweenFormula {n} (a b f : Fin n) : BoundedFormula n :=  .allMem f (exMem a.succ (exMem b.succ.succ (orderedPairFormula 2 1 0)))def functionFormula {n} (a b f : Fin n) : BoundedFormula n :=  .conj (relationBetweenFormula a b f)    (.allMem a (exMem b.succ (.conj (pairMembershipFormula 1 0 f.succ.succ)      (.allMem b.succ.succ (imp (pairMembershipFormula 2 0 f.succ.succ.succ) (.equal 0 1))))))def nonemptyFormula {n} (x : Fin n) : BoundedFormula n := exMem x (.equal 0 0)def choiceFunctionFormula {n} (a f : Fin n) : BoundedFormula n :=  .conj (.allMem f (exMem a.succ (exMem 0 (orderedPairFormula 2 1 0))))    (.allMem a (exMem 0 (.conj (pairMembershipFormula 1 0 f.succ.succ)      (.allMem 1 (imp (pairMembershipFormula 2 0 f.succ.succ.succ) (.equal 0 1))))))end BoundedFormulastructure TransitiveGround where  sets : Set ZFSet.{u}  transitive : ∀ {x y}, x ∈ sets → y ∈ x → y ∈ setsstructure InjectionCode (D N f : ZFSet.{u}) : Prop where  function : ZFSet.IsFunc D N f  injective : ∀ x y z, ZFSet.pair x z ∈ f → ZFSet.pair y z ∈ f → x = ynamespace TransitiveGroundopen SetFormulavariable (M : TransitiveGround.{u})def groundEmbeddable (D N : ZFSet.{u}) : Prop := ∃ f ∈ M.sets, InjectionCode D N fend TransitiveGrounddef setTransitive (x : ZFSet.{u}) : Prop := ∀ y ∈ x, ∀ z ∈ y, z ∈ xdef ordinalSetProperty (x : ZFSet.{u}) : Prop :=  setTransitive x ∧ ∀ y ∈ x, setTransitive ynamespace TransitiveGroundopen SetFormulavariable (M : TransitiveGround.{u})noncomputable def groundPower (B : ZFSet.{u}) : ZFSet.{u} :=  ZFSet.sep (fun p => p ∈ M.sets) (ZFSet.powerset B)end TransitiveGrounddef GroundBelow (M : TransitiveGround.{u}) (A K : ZFSet.{u}) : Prop :=  ∃ β ∈ K, M.groundEmbeddable A βdef GroundCardinal (M : TransitiveGround.{u}) (κ : ZFSet.{u}) : Prop :=  ordinalSetProperty κ ∧ ∀ β ∈ κ, ¬ M.groundEmbeddable κ βdef CofinalFunctionCode (α K f : ZFSet.{u}) : Prop :=  ZFSet.IsFunc α K f ∧ ∀ β ∈ K, ∃ x ∈ α, ∃ y ∈ K,    ZFSet.pair x y ∈ f ∧ (β = y ∨ β ∈ y)def GroundCofinalRegular (M : TransitiveGround.{u}) (K : ZFSet.{u}) : Prop :=  ∀ α ∈ K, ∀ f ∈ M.sets, ¬ CofinalFunctionCode α K fdef GroundCardinalStrongLimit (M : TransitiveGround.{u}) (K : ZFSet.{u}) : Prop :=  ∀ κ ∈ K, GroundCardinal M κ → GroundBelow M (M.groundPower κ) Kdef GroundStandardInaccessible (M : TransitiveGround.{u}) (K : ZFSet.{u}) : Prop :=  GroundCardinal M K ∧ ¬ M.groundEmbeddable K ZFSet.omega ∧    GroundCofinalRegular M K ∧ GroundCardinalStrongLimit M Knamespace SetFormuladef extensionality : SetFormula 0 :=  .all (.all (imp    (.all (.conj (imp (.mem 0 2) (.mem 0 1)) (imp (.mem 0 1) (.mem 0 2))))    (.equal 1 0)))def foundation : SetFormula 0 :=  .all (imp (ex (.mem 0 1))    (ex (.conj (.mem 0 1) (.all (.neg (.conj (.mem 0 2) (.mem 0 1)))))))def emptySet : SetFormula 0 := ex (.all (.neg (.mem 0 1)))def pairing : SetFormula 0 :=  .all (.all (ex (.all (.conj    (imp (.mem 0 1) (disj (.equal 0 3) (.equal 0 2)))    (imp (disj (.equal 0 3) (.equal 0 2)) (.mem 0 1))))))def union : SetFormula 0 :=  .all (ex (.all (.conj    (imp (.mem 0 1) (ex (.conj (.mem 0 3) (.mem 1 0))))    (imp (ex (.conj (.mem 0 3) (.mem 1 0))) (.mem 0 1)))))def powerSet : SetFormula 0 :=  .all (ex (.all (.conj    (imp (.mem 0 1) (.all (imp (.mem 0 1) (.mem 0 3))))    (imp (.all (imp (.mem 0 1) (.mem 0 3))) (.mem 0 1)))))def SeparationSchema (U : Set ZFSet.{u}) : Prop :=  ∀ {n} (φ : SetFormula (n + 1)) (params : Fin n → ZFSet.{u}),    (∀ i, params i ∈ U) → ∀ x ∈ U, ∃ y ∈ U,      ∀ z ∈ U, z ∈ y ↔ z ∈ x ∧ Realize U φ (extend z params)def CollectionSchema (U : Set ZFSet.{u}) : Prop :=  ∀ {n} (φ : SetFormula (n + 2)) (params : Fin n → ZFSet.{u}),    (∀ i, params i ∈ U) → ∀ a ∈ U,      (∀ x ∈ U, x ∈ a → ∃ y ∈ U, Realize U φ (extend x (extend y params))) →      ∃ b ∈ U, ∀ x ∈ U, x ∈ a →        ∃ y ∈ U, y ∈ b ∧ Realize U φ (extend x (extend y params))def emptySetFormula {n : Nat} (x : Fin n) : SetFormula n := .all (.neg (.mem 0 x.succ))def successorFormula {n : Nat} (y x : Fin n) : SetFormula n :=  .all (.conj (imp (.mem 0 y.succ) (disj (.equal 0 x.succ) (.mem 0 x.succ)))    (imp (disj (.equal 0 x.succ) (.mem 0 x.succ)) (.mem 0 y.succ)))def infinity : SetFormula 0 :=  ex (.conj (ex (.conj (.mem 0 1) (emptySetFormula 0)))    (.all (imp (.mem 0 1) (ex (.conj (.mem 0 2) (successorFormula 0 1))))))def choice : SetFormula 0 :=  .all (imp (BoundedFormula.allMem 0 (BoundedFormula.nonemptyFormula 0)).toFormula    (ex (BoundedFormula.choiceFunctionFormula 1 0).toFormula))def ReplacementSchema (U : Set ZFSet.{u}) : Prop :=  ∀ {n} (φ : SetFormula (n + 2)) (params : Fin n → ZFSet.{u}),    (∀ i, params i ∈ U) → ∀ A ∈ U,      (∀ x ∈ U, x ∈ A → ∃ y ∈ U, Realize U φ (extend x (extend y params)) ∧        ∀ z ∈ U, Realize U φ (extend x (extend z params)) → z = y) →      ∃ B ∈ U, ∀ y ∈ U, y ∈ B ↔ ∃ x ∈ U, x ∈ A ∧ Realize U φ (extend x (extend y params))def finiteZFAxioms : SetFormula 0 :=  .conj extensionality (.conj foundation (.conj emptySet    (.conj pairing (.conj SetFormula.union (.conj powerSet infinity)))))def ZFRealization (U : Set ZFSet.{u}) : Prop :=  Realize U finiteZFAxioms Fin.elim0 ∧ SeparationSchema U ∧ ReplacementSchema Uend SetFormulanamespace BoundedFormulaopen SetFormuladef injectionFormula {n} (d c f : Fin n) : BoundedFormula n :=  .conj (functionFormula d c f) (.allMem d (.allMem d.succ (.allMem c.succ.succ    (imp (.conj (pairMembershipFormula 2 0 f.succ.succ.succ)      (pairMembershipFormula 1 0 f.succ.succ.succ)) (.equal 2 1)))))end BoundedFormulanamespace SetFormuladef hasInjectionFormula {n} (d c : Fin n) : SetFormula n :=  ex (BoundedFormula.injectionFormula d.succ c.succ 0).toFormulaend SetFormulanamespace BoundedFormulaopen SetFormuladef surjectionFormula {n : Nat} (a b f : Fin n) : BoundedFormula n :=  .conj (functionFormula a b f)    (.allMem b (exMem a.succ (pairMembershipFormula 0 1 f.succ.succ)))end BoundedFormulanamespace SetFormuladef partitionPrinciple : SetFormula 0 :=  .all (.all (.all (imp (BoundedFormula.surjectionFormula (n := 3) 2 1 0).toFormula    (hasInjectionFormula (n := 3) 1 2))))end SetFormulaend PartitionPilot.Forcingnamespace PartitionPilot.Forcing.TransitiveGroundopen SetFormulauniverse uvariable (M : TransitiveGround.{u})theorem exists_model_partitionPrinciple_without_choice    (pairing : Realize M.sets SetFormula.pairing Fin.elim0)    (unions : Realize M.sets SetFormula.union Fin.elim0)    (powers : Realize M.sets powerSet Fin.elim0) (separation : SeparationSchema M.sets)    (collection : CollectionSchema M.sets) (infinite : Realize M.sets infinity Fin.elim0)    (choice : Realize M.sets SetFormula.choice Fin.elim0)    (small : M.sets.Countable)    {K : ZFSet.{u}} (hK : K ∈ M.sets) (standard : GroundStandardInaccessible M K) :    ∃ N : TransitiveGround.{u}, M.sets ⊆ N.sets ∧ ZFRealization N.sets ∧      Realize N.sets partitionPrinciple Fin.elim0 ∧      ¬ Realize N.sets SetFormula.choice Fin.elim0 := by  sorryend PartitionPilot.Forcing.TransitiveGroundend OAI
Every extracted statement of the accompanying papers

The statements the atlas extracted automatically from each accompanying paper’s TeX source, with links to the full sources.

The Partition Principle does not imply Choice

Theorem

If \ZF is consistent, then so is \ZF+\PP+\ACwo+\neg\AC.

Section 1, Introduction Read it in the paper TeX source, line 23
Show the TeX
If $\ZF$ is consistent, then so is $\ZF+\PP+\ACwo+\neg\AC$.
Theorem

Let V be a countable transitive model of \ZFC. There are a set forcing \mathbb Q\in V, a V-generic filter G, and a transitive symmetric submodel W of V[G] such that

V\subseteq W\subseteq V[G],\qquad \Ord^W=\Ord^V,\qquad W\models\ZF+\PP+\ACwo+\neg\AC.

Every countable sequence of elements of V that belongs to W already belongs to V.

Section 1, Introduction Read it in the paper TeX source, line 29
Show the TeX
Let $V$ be a countable transitive model of $\ZFC$. There are a set forcing
$\mathbb Q\in V$, a $V$-generic filter $G$, and a transitive symmetric
submodel $W$ of $V[G]$ such that
\[
 V\subseteq W\subseteq V[G],\qquad
 \Ord^W=\Ord^V,\qquad
 W\models\ZF+\PP+\ACwo+\neg\AC.
\]
Every countable sequence of elements of $V$ that belongs to $W$ already
belongs to $V$.
Configuration and file facts
OpenAI’s Lean catalogue
OpenAI lists this as a main result in its Lean catalogue.
Allowed axioms
propext, Quot.sound, Classical.choiceThe axioms this configuration allows a proof to use. A replay shows which of them a proof uses.
Imports
Mathlib
Imports from outside Mathlib
None
Local vocabulary
50 local vocabulary declarations
Lines of Lean, without comments or blank lines
155
Second proof-verification program (nanoda)
Off in OpenAI's configuration.

Statement comparison

A shareable summary of this page: the proposed paper match, what the Lean statement expresses, and which reviews are recorded.

Plectis Atlas

Partition Principle without Choice from a ground model

Family 244: The Partition Principle does not imply Choice

Candidate pairing

Theorem (The symmetric-model theorem)

The symmetric forcing relation is definable formula by formula in V, and it forces every axiom instance of full pure-set \ZF. If V is externally transitive, the evaluated class W is a transitive model of that theory, with

V\subseteq W\subseteq V[F][H], \qquad \Ord^W=\Ord^{V[F][H]}.

The truth lemma holds for this evaluated model. Over an arbitrary countable choice ground, it holds for the symmetric quotient of internal names described in Section sec:metatheory.

The Partition Principle does not imply Choice

TeX label thm:symmetric-model, build/sections/forcing.tex, line 237

The Lean statement says

theorem exists_model_partitionPrinciple_without_choice    (pairing : Realize M.sets SetFormula.pairing Fin.elim0)    (unions : Realize M.sets SetFormula.union Fin.elim0)    (powers : Realize M.sets powerSet Fin.elim0) (separation : SeparationSchema M.sets)    (collection : CollectionSchema M.sets) (infinite : Realize M.sets infinity Fin.elim0)    (choice : Realize M.sets SetFormula.choice Fin.elim0)    (small : M.sets.Countable)    {K : ZFSet.{u}} (hK : K ∈ M.sets) (standard : GroundStandardInaccessible M K) :    ∃ N : TransitiveGround.{u}, M.sets ⊆ N.sets ∧ ZFRealization N.sets ∧      Realize N.sets partitionPrinciple Fin.elim0 ∧      ¬ Realize N.sets SetFormula.choice Fin.elim0 := by  sorry

A Lean statement states the theorem and leaves its proof as sorry on purpose. OpenAI’s proof is in a separate solution module, and a program called Comparator checks that proof against this statement.

Atlas selected this possible match because the two statements share words. No review of whether they mean the same thing is recorded.One independent group reports that Comparator accepted a run for this file at the release version shown here.Statement review: none recorded

50 local vocabulary declarationsAllowed axioms: propext, Quot.sound, Classical.choiceopenai/math at fd4aeebwcook04.github.io/plectis-atlas/statements/PartitionPrinciple.html

Recorded comparisons with the paper

Atlas records no contributed comparison of this statement with the paper.

Contributed Comparator run reports

Atlas records no contributed report of running Comparator for this statement file.

More about this statement

  • Commentary The Lean statement assumes an inaccessible cardinal in the ground model and concludes failure of choice without the retained choice for ordinal-indexed families; the documentation discloses the cardinal but not that omission. Robert Joseph George, Do the Lean statements in openai/math match their papers?, 2026-10-07 Source
  • Commentary The author says they did not read or run the Lean proof and do not plan to, but are willing to accept that the formal statement of this principle is easy enough to get right. Asaf Karagila, Why I don't trust Lean code from AI, 2026-10-10 Source

Compare this statement with the paperShare a Comparator run reportSuggest a change