← Back to the assurance auditThe original technical explorer is preserved here as supporting evidence.
Brennan McCloudIndependent research
Independent Investigation No. 01 · August 31, 2026

A computer checked ten hard math proofs. Here is what it checked, and what it could not.

On August 1, 2026, OpenAI said an AI had solved ten math problems that had been open for years. It did something unusual too. It shipped the proofs in a form a computer can check, line by line. Anyone can run that check. This page shows you what those proofs are, why they matter, and where the checking stops.

What "verified" covers

Every step follows. The computer read all of it.
Nothing was skipped or left as a to-do.
It leans on three standard assumptions, nothing more.
The written claim matches the famous problem.
The checker itself has no bugs.
New to proof checkers? Three quick answers

What is a proof checker?

Lean is a program. You feed it math. It checks every single step. If one step does not follow, it says no. It has no opinion and it never gets tired.

Think of it like the compiler that checks your code before it runs. It will not tell you your app is a good idea. It will tell you the code is valid.

What does “sorry-free” mean?

In Lean you can write the word sorry to skip a step you have not proved yet. It is a to-do note. “Sorry-free” means there are no to-do notes left. Nothing was skipped.

All ten results are sorry-free. That is real. It is also the easiest of the checks to pass, and it is the one people quote most.

So is the math definitely right?

The steps are right. That is what the checker proves. But a proof has two parts: the steps, and what you set out to prove in the first place. A checker only reads the steps.

If you write down the wrong question and prove it perfectly, the computer says yes. That is not a bug. It is the job it was built to do.

Source: github.com/openai/ten-proofs (Apache-2.0) · OpenAI's announcement · 12 named results in 10 files · every number on this page was measured or parsed from that repository

The ten results

What they are, in plain English

Each one gets an honest label. Most of this is pure mathematics, and saying otherwise would be selling you something.

2touch technology people use or will use
4sit under a field that matters, but change nothing today
6are pure math. The value is knowing the answer
A

How tightly can you pack balls?

Foundational

Stack oranges in a crate and you can fill about 74% of it. In higher dimensions nobody knows the best answer. But we know a ceiling. This found the exact best ceiling one method can ever give, and proved the method cannot do better.

Where it shows up

Packing balls and building error-correcting codes are the same math. The 24-dimensional packing is the Golay code, and that code flew on Voyager.

So what

It closes a question open since 1978. It tells researchers that one whole approach is now used up.

You must read this yourself5.4 KB
follows automatically once you accept it 2,048 KB · you audit 0.26%
Show the technical statement

Formal name: Sharp Cohn–Elkies sphere-packing asymptotics. Certifies 4 theorems in SpherePacking.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • PackingBounds.FullMain.exact_limit
  • PackingBounds.FullMain.exact_binary_exponent
  • PackingBounds.PackingBridge.sphere_packing_sharp_asymptotic_upper
  • PackingBounds.sharpFullCohnElkiesManuscriptConclusions

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

set_option autoImplicit false

noncomputable section

open Filter MeasureTheory Metric
open scoped ENNReal FourierTransform SchwartzMap Topology

namespace CohnElkies

abbrev Euclidean (d : ℕ) := EuclideanSpace ℝ (Fin d)

abbrev TestFunction (d : ℕ) := 𝓢(Euclidean d, ℂ)

def unitBallVolume (d : ℕ) : ℝ :=
  Real.pi ^ ((d : ℝ) / 2) / Real.Gamma ((d : ℝ) / 2 + 1)

instance numeralTwoAtLeast : Nat.AtLeastTwo 2 := ⟨by decide⟩

instance euclideanFiniteDimensional (d : ℕ) :
    FiniteDimensional ℝ (EuclideanSpace ℝ (Fin d)) := by
  infer_instance

instance euclideanBorelSpace (d : ℕ) :
    BorelSpace (EuclideanSpace ℝ (Fin d)) := by
  infer_instance

end CohnElkies

namespace PackingBounds

structure FullAdmissible (d : ℕ) where
  function : CohnElkies.TestFunction d
  real : ∀ x : CohnElkies.Euclidean d, (function x).im = 0
  fourier_real :
    ∀ x : CohnElkies.Euclidean d, ((𝓕 function) x).im = 0
  fourier_nonneg :
    ∀ x : CohnElkies.Euclidean d, 0 ≤ ((𝓕 function) x).re
  fourier_zero_pos :
    0 < ((𝓕 function) (0 : CohnElkies.Euclidean d)).re
  outside_nonpos :
    ∀ x : CohnElkies.Euclidean d, 1 ≤ ‖x‖ → (function x).re ≤ 0

def fullQuotient {d : ℕ} (f : FullAdmissible d) : ℝ :=
  (f.function (0 : CohnElkies.Euclidean d)).re /
    ((𝓕 f.function) (0 : CohnElkies.Euclidean d)).re

def fullQuotientSet (d : ℕ) : Set ℝ :=
  Set.range (fullQuotient (d := d))

def fullLinearProgram (d : ℕ) : ℝ :=
  CohnElkies.unitBallVolume d / (2 : ℝ) ^ d *
    sInf (fullQuotientSet d)

end PackingBounds

structure SpherePacking (d : ℕ) where
  centers : Set (EuclideanSpace ℝ (Fin d))
  separation : ℝ
  separation_pos : 0 < separation := by positivity
  centers_dist : Pairwise (separation ≤ dist · · : centers → centers → Prop)

@[reducible] def SpherePacking.occupiedBallRegion {d : ℕ} (S : SpherePacking d) :
    Set (EuclideanSpace ℝ (Fin d)) :=
  ⋃ x : S.centers, ball (x : EuclideanSpace ℝ (Fin d)) (S.separation / 2)

noncomputable def SpherePacking.densityInsideRadius {d : ℕ}
    (S : SpherePacking d) (R : ℝ) : ℝ≥0∞ :=
  volume (S.occupiedBallRegion ∩ ball 0 R) / volume (ball (0 : EuclideanSpace ℝ (Fin d)) R)

noncomputable def SpherePacking.upperPackingDensity {d : ℕ}
    (S : SpherePacking d) : ℝ≥0∞ :=
  limsup S.densityInsideRadius atTop

def SpherePackingConstant (d : ℕ) : ℝ≥0∞ :=
  ⨆ S : SpherePacking d, S.upperPackingDensity

namespace PackingBounds

structure SharpFullCohnElkiesManuscriptConclusions : Prop where
  root_before_infimum :
    Tendsto
      (fun d : ℕ =>
        sInf {q : ℝ | ∃ f : FullAdmissible d,
          fullQuotient f ^ ((d : ℝ)⁻¹) = q} /
          Real.sqrt (d : ℝ))
      atTop (𝓝 (1 / Real.pi))
  root_before_infimum_vanishing_error :
    ∃ err : ℕ → ℝ,
      Tendsto err atTop (𝓝 0) ∧
      ∀ d : ℕ, 0 < d →
        sInf {q : ℝ | ∃ f : FullAdmissible d,
          fullQuotient f ^ ((d : ℝ)⁻¹) = q} =
          (1 / Real.pi + err d) * Real.sqrt (d : ℝ)
  linear_program_root :
    Tendsto
      (fun d : ℕ => (fullLinearProgram d) ^ ((d : ℝ)⁻¹))
      atTop (𝓝 (Real.sqrt (Real.exp 1 / (2 * Real.pi))))
  natural_logarithmic_rate :
    Tendsto
      (fun d : ℕ => Real.log (fullLinearProgram d) / (d : ℝ))
      atTop
      (𝓝 ((1 / 2 : ℝ) * Real.log (Real.exp 1 / (2 * Real.pi))))
  natural_vanishing_exponential_error :
    ∃ err : ℕ → ℝ,
      Tendsto err atTop (𝓝 0) ∧
      (∀ᶠ d : ℕ in atTop,
        fullLinearProgram d =
          (Real.sqrt (Real.exp 1 / (2 * Real.pi)) + err d) ^ d)
  universal_nonnegative_delta :
    ∃ δ : ℕ → ℝ,
      Tendsto δ atTop (𝓝 0) ∧
      (∀ d : ℕ, 0 ≤ δ d) ∧
      (∀ᶠ d : ℕ in atTop, ∀ f : FullAdmissible d,
        (2 : ℝ) ^ d / CohnElkies.unitBallVolume d *
          (Real.sqrt (Real.exp 1 / (2 * Real.pi)) - δ d) ^ d ≤
            fullQuotient f)
  base_two_exponent_positive :
    0 < (1 / 2 : ℝ) * Real.logb 2 (2 * Real.pi / Real.exp 1)
  base_two_decimal_certificate :
    (1 / 2 : ℝ) * Real.logb 2 (2 * Real.pi / Real.exp 1) ∈
      Set.Ioo
        (0.604400544291677695341677307053 : ℝ)
        0.604400544291677695341677307054
  base_two_logarithmic_rate :
    Tendsto
      (fun d : ℕ => Real.logb 2 (fullLinearProgram d) / (d : ℝ))
      atTop
      (𝓝 (-((1 / 2 : ℝ) * Real.logb 2 (2 * Real.pi / Real.exp 1))))
  base_two_vanishing_exponential_error :
    ∃ err : ℕ → ℝ,
      Tendsto err atTop (𝓝 0) ∧
      (∀ᶠ d : ℕ in atTop,
        fullLinearProgram d =
          (2 : ℝ) ^
            (-((1 / 2 : ℝ) *
                Real.logb 2 (2 * Real.pi / Real.exp 1) + err d) *
              (d : ℝ)))

end PackingBounds

namespace PackingBounds.FullMain

theorem exact_limit :
    Tendsto
      (fun d : ℕ =>
        PackingBounds.fullLinearProgram d ^ ((d : ℝ)⁻¹))
      atTop
      (nhds (Real.sqrt (Real.exp 1 / (2 * Real.pi)))) := by
  sorry

theorem exact_binary_exponent :
    Tendsto
      (fun d : ℕ =>
        Real.logb 2 (PackingBounds.fullLinearProgram d) / (d : ℝ))
      atTop
      (nhds (-(1 / 2 : ℝ) *
        Real.logb 2 (2 * Real.pi / Real.exp 1))) := by
  sorry

end PackingBounds.FullMain

namespace PackingBounds.PackingBridge

theorem sphere_packing_sharp_asymptotic_upper :
    ∃ e : ℕ → ℝ,
      Asymptotics.IsLittleO atTop e (fun _ : ℕ => (1 : ℝ)) ∧
      ∀ d : ℕ, 0 < d →
        SpherePackingConstant d ≤
          ENNReal.ofReal
            ((Real.sqrt (Real.exp 1 / (2 * Real.pi)) + e d) ^ d) := by
  sorry

end PackingBounds.PackingBridge

namespace PackingBounds

theorem sharpFullCohnElkiesManuscriptConclusions :
    SharpFullCohnElkiesManuscriptConclusions := by
  sorry

end PackingBounds

end
B

The limit on fixing errors

Touches real systems

Error-correcting codes add spare data so a message survives damage. There is a ceiling on how much real data you can send and still fix a given amount of damage. That ceiling had not moved since 1977. It just moved down.

Where it shows up

These codes are why a scratched disc still plays, why a text arrives on one bar, and why photos from deep space are not static. Voyager, 5G, and your SSD all use them.

So what

It says some codes people hoped for cannot exist. It does not build a better code. Nothing ships differently tomorrow.

You must read this yourself5.3 KB
follows automatically once you accept it 4,425 KB · you audit 0.12%
Show the technical statement

Formal name: Strict improvement over the MRRW binary-code bound. Certifies 6 theorems in MetricCodes.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • MetricCodes.Hamming.binaryRate_lt_classicalRate
  • MetricCodes.Hamming.exists_binaryRate_improvement
  • MetricCodes.Johnson.binaryRate_le_combinedVariationalRate
  • MetricCodes.MRRW.strict_mrrw2
  • MetricCodes.Johnson.binaryRate_lt_mrrw
  • MetricCodes.Johnson.exists_binaryRate_mrrw_improvement

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

set_option autoImplicit false

noncomputable section

namespace MetricCodes

instance numeralTwoAtLeast : Nat.AtLeastTwo 2 := ⟨by decide⟩

abbrev BinaryWord (n : ℕ) := Fin n → Bool

def hammingDist {n : ℕ} (x y : BinaryWord n) : ℕ :=
  (Finset.univ.filter fun i => x i ≠ y i).card

def binaryWeight {n : ℕ} (x : BinaryWord n) : ℕ :=
  (Finset.univ.filter fun i => x i = true).card

def weightShell (n w : ℕ) : Finset (BinaryWord n) :=
  Finset.univ.filter fun x => binaryWeight x = w

def IsBinaryCode {n : ℕ} (d : ℕ) (C : Finset (BinaryWord n)) : Prop :=
  ∀ ⦃x⦄, x ∈ C → ∀ ⦃y⦄, y ∈ C → x ≠ y → d ≤ hammingDist x y

def binaryEntropy (u : ℝ) : ℝ :=
  -(u * Real.logb 2 u) -
    (1 - u) * Real.logb 2 (1 - u)

def hammingGamma (a b : ℝ) : ℝ :=
  (2 * (a - b) * (1 - a - b)) /
    Real.sqrt (a * (1 - a))

namespace Hamming

noncomputable def validCodes (n d : ℕ) : Finset (Finset (BinaryWord n)) := by
  classical
  exact Finset.univ.filter (MetricCodes.IsBinaryCode d)

noncomputable def codeNumber (n d : ℕ) : ℕ :=
  (validCodes n d).sup fun C => C.card

def classicalParameter (δ : ℝ) : ℝ :=
  (1 : ℝ) / 2 - Real.sqrt (δ * (1 - δ))

def classicalRate (δ : ℝ) : ℝ :=
  MetricCodes.binaryEntropy (classicalParameter δ)

def binaryRate (δ : ℝ) : ℝ :=
  Filter.limsup
    (fun n : ℕ =>
      Real.logb 2
        (codeNumber n (Nat.ceil (δ * (n : ℝ))) : ℝ) / (n : ℝ))
    Filter.atTop

def Feasible (δ a b : ℝ) : Prop :=
  0 ≤ b ∧ b < a ∧ a ≤ (1 : ℝ) / 2 ∧
    1 - 2 * δ < MetricCodes.hammingGamma a b

def rateSet (δ : ℝ) : Set ℝ :=
  {r | ∃ a b : ℝ, Feasible δ a b ∧
    r = MetricCodes.binaryEntropy a - MetricCodes.binaryEntropy b}

def variationalRate (δ : ℝ) : ℝ := sInf (rateSet δ)

theorem binaryRate_lt_classicalRate {δ : ℝ}
    (hδ : 0 < δ) (hδ' : δ < (1 : ℝ) / 2) :
    binaryRate δ < classicalRate δ := by
  sorry

theorem exists_binaryRate_improvement {δ : ℝ}
    (hδ : 0 < δ) (hδ' : δ < (1 : ℝ) / 2) :
    ∃ ε : ℝ, 0 < ε ∧ binaryRate δ ≤ classicalRate δ - ε := by
  sorry

end Hamming

namespace Johnson

def binaryCodeFamily (n d : ℕ) : Finset (Finset (BinaryWord n)) := by
  classical
  exact (Finset.univ : Finset (BinaryWord n)).powerset.filter
    (fun C => IsBinaryCode d C)

def binaryCodeNumber (n d : ℕ) : ℕ :=
  (binaryCodeFamily n d).sup (fun C => C.card)

def shellCodeFamily (n w d : ℕ) : Finset (Finset (BinaryWord n)) := by
  classical
  exact (weightShell n w).powerset.filter (fun C => IsBinaryCode d C)

def shellCodeNumber (n w d : ℕ) : ℕ :=
  (shellCodeFamily n w d).sup (fun C => C.card)

def centeredDegree (u : ℝ) : ℝ := 1 - 2 * u

def centeredWeight (α : ℝ) : ℝ := 1 - 2 * α

def centeredSigma (β γ : ℝ) : ℝ := 1 - 2 * β - 2 * γ

def centeredEta (α β γ : ℝ) : ℝ :=
  1 - 2 * α + 2 * β - 2 * γ

def spectralLimit (α β γ u : ℝ) : ℝ :=
  let z := centeredDegree u
  let m := centeredWeight α
  let σ := centeredSigma β γ
  let η := centeredEta α β γ
  (σ * η - m * z ^ 2) ^ 2 /
      (z ^ 2 * (1 - m ^ 2) * (1 - z ^ 2)) +
    ((z ^ 2 - η ^ 2) * (σ ^ 2 - z ^ 2)) /
      (z ^ 2 * (1 - m ^ 2) * Real.sqrt (1 - z ^ 2))

def asymptoticThreshold (δ α : ℝ) : ℝ :=
  1 - δ / (2 * α * (1 - α))

def rankPenalty (α β γ : ℝ) : ℝ :=
  α * MetricCodes.binaryEntropy (β / α) +
    (1 - α) * MetricCodes.binaryEntropy (γ / (1 - α))

def shellRate (α β γ u : ℝ) : ℝ :=
  1 - MetricCodes.binaryEntropy α + MetricCodes.binaryEntropy u -
    rankPenalty α β γ

structure AsymptoticParameters (δ α β γ u : ℝ) : Prop where
  distance_pos : 0 < δ
  distance_lt_half : δ < (1 : ℝ) / 2
  weight_gt_distance : δ / 2 < α
  weight_lt_half : α < (1 : ℝ) / 2
  support_nonneg : 0 ≤ β
  support_lt_half : β < α / 2
  complement_nonneg : 0 ≤ γ
  complement_lt_half : γ < (1 - α) / 2
  first_lt_degree : β + γ < u
  degree_lt_weight : u < α
  degree_lt_left : u < α - β + γ
  degree_lt_right : u < 1 - α + β - γ

def IsSpectrallyFeasible (δ α β γ u : ℝ) : Prop :=
  asymptoticThreshold δ α < spectralLimit α β γ u

def Feasible (δ α β γ u : ℝ) : Prop :=
  AsymptoticParameters δ α β γ u ∧
    IsSpectrallyFeasible δ α β γ u

def rateSet (δ : ℝ) : Set ℝ :=
  {r | ∃ α β γ u : ℝ,
    Feasible δ α β γ u ∧ r = shellRate α β γ u}

def variationalRate (δ : ℝ) : ℝ := sInf (rateSet δ)

def combinedVariationalRate (δ : ℝ) : ℝ :=
  min (MetricCodes.Hamming.variationalRate δ) (variationalRate δ)

def mrrwG (v : ℝ) : ℝ :=
  MetricCodes.binaryEntropy ((1 - Real.sqrt (1 - v)) / 2)

def mrrwObjective (δ r : ℝ) : ℝ :=
  1 + mrrwG (r ^ 2) -
    mrrwG (r ^ 2 + 2 * δ * r + 2 * δ)

def mrrwRateSet (δ : ℝ) : Set ℝ :=
  {t | ∃ r : ℝ, 0 ≤ r ∧ r ≤ 1 - 2 * δ ∧
    t = mrrwObjective δ r}

def mrrwRate (δ : ℝ) : ℝ :=
  sInf (mrrwRateSet δ)

theorem binaryRate_le_combinedVariationalRate
    {d : ℝ} (hd : 0 < d) (hdhalf : d < (1 : ℝ) / 2) :
    MetricCodes.Hamming.binaryRate d ≤ combinedVariationalRate d := by
  sorry

theorem binaryRate_lt_mrrw
    {d : ℝ} (hd : 0 < d) (hdhalf : d < (1 : ℝ) / 2) :
    MetricCodes.Hamming.binaryRate d < mrrwRate d := by
  sorry

theorem exists_binaryRate_mrrw_improvement
    {d : ℝ} (hd : 0 < d) (hdhalf : d < (1 : ℝ) / 2) :
    ∃ e : ℝ, 0 < e ∧ MetricCodes.Hamming.binaryRate d ≤ mrrwRate d - e := by
  sorry

end Johnson

namespace MRRW

theorem strict_mrrw2
    {δ : ℝ} (hδ : 0 < δ) (hhalf : δ < (1 : ℝ) / 2) :
    MetricCodes.Johnson.combinedVariationalRate δ <
      MetricCodes.Johnson.mrrwRate δ := by
  sorry

end MRRW

end MetricCodes

end
B

How many balls can touch one ball?

Foundational

Put one ball down. How many identical balls can touch it at once? That count is the kissing number. This proves a whole ladder of better limits, each one tighter than the last.

Where it shows up

This is the math behind picking radio signal patterns that a noisy receiver can still tell apart. It shows up in wireless and in audio codecs like Opus.

So what

Another ceiling moved. Useful for knowing how much room is left, not for building the next radio.

You must read this yourself8.5 KB
follows automatically once you accept it 4,425 KB · you audit 0.19%
Show the technical statement

Formal name: Strict hierarchy of improved spherical-code bounds. Certifies 4 theorems in MetricCodes.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • MetricCodes.Johnson.main_binary_theorem
  • MetricCodes.Spherical.HigherHierarchy.main_general
  • MetricCodes.Spherical.HigherHierarchy.strict_hierarchy
  • MetricCodes.Spherical.HigherHierarchy.NumericalMaximum.eventually_kissingNumber_lt_published

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

set_option autoImplicit false

noncomputable section

open Filter Metric
open scoped BigOperators InnerProductSpace Topology

namespace MetricCodes

instance numeralTwoAtLeast : Nat.AtLeastTwo 2 := ⟨by decide⟩

abbrev BinaryWord (n : ℕ) := Fin n → Bool

def hammingDist {n : ℕ} (x y : BinaryWord n) : ℕ :=
  (Finset.univ.filter fun i => x i ≠ y i).card

def IsBinaryCode {n : ℕ} (d : ℕ) (C : Finset (BinaryWord n)) : Prop :=
  ∀ ⦃x⦄, x ∈ C → ∀ ⦃y⦄, y ∈ C → x ≠ y → d ≤ hammingDist x y

def binaryEntropy (u : ℝ) : ℝ :=
  -(u * Real.logb 2 u) - (1 - u) * Real.logb 2 (1 - u)

def hammingGamma (a b : ℝ) : ℝ :=
  (2 * (a - b) * (1 - a - b)) / Real.sqrt (a * (1 - a))

def sphericalEntropy (u : ℝ) : ℝ :=
  (1 + u) * Real.logb 2 (1 + u) - u * Real.logb 2 u

def Gamma (a b : ℝ) : ℝ :=
  ((a - b) * (1 + a + b)) /
    ((1 + 2 * a) * Real.sqrt (a * (1 + a)))

def classicalThreshold (s : ℝ) : ℝ :=
  (1 / Real.sqrt (1 - s ^ 2) - 1) / 2

namespace Hamming

noncomputable def validCodes (n d : ℕ) : Finset (Finset (BinaryWord n)) := by
  classical
  exact Finset.univ.filter (MetricCodes.IsBinaryCode d)

noncomputable def codeNumber (n d : ℕ) : ℕ :=
  (validCodes n d).sup fun C => C.card

def binaryRate (δ : ℝ) : ℝ :=
  Filter.limsup
    (fun n : ℕ =>
      Real.logb 2
        (codeNumber n (Nat.ceil (δ * (n : ℝ))) : ℝ) / (n : ℝ))
    Filter.atTop

def Feasible (δ a b : ℝ) : Prop :=
  0 ≤ b ∧ b < a ∧ a ≤ (1 : ℝ) / 2 ∧
    1 - 2 * δ < MetricCodes.hammingGamma a b

def rateSet (δ : ℝ) : Set ℝ :=
  {r | ∃ a b : ℝ, Feasible δ a b ∧
    r = MetricCodes.binaryEntropy a - MetricCodes.binaryEntropy b}

def variationalRate (δ : ℝ) : ℝ := sInf (rateSet δ)

end Hamming

namespace Johnson

def centeredDegree (u : ℝ) : ℝ := 1 - 2 * u

def centeredWeight (α : ℝ) : ℝ := 1 - 2 * α

def centeredSigma (β γ : ℝ) : ℝ := 1 - 2 * β - 2 * γ

def centeredEta (α β γ : ℝ) : ℝ := 1 - 2 * α + 2 * β - 2 * γ

def spectralLimit (α β γ u : ℝ) : ℝ :=
  let z := centeredDegree u
  let m := centeredWeight α
  let σ := centeredSigma β γ
  let η := centeredEta α β γ
  (σ * η - m * z ^ 2) ^ 2 /
      (z ^ 2 * (1 - m ^ 2) * (1 - z ^ 2)) +
    ((z ^ 2 - η ^ 2) * (σ ^ 2 - z ^ 2)) /
      (z ^ 2 * (1 - m ^ 2) * Real.sqrt (1 - z ^ 2))

def asymptoticThreshold (δ α : ℝ) : ℝ :=
  1 - δ / (2 * α * (1 - α))

def rankPenalty (α β γ : ℝ) : ℝ :=
  α * MetricCodes.binaryEntropy (β / α) +
    (1 - α) * MetricCodes.binaryEntropy (γ / (1 - α))

def shellRate (α β γ u : ℝ) : ℝ :=
  1 - MetricCodes.binaryEntropy α + MetricCodes.binaryEntropy u -
    rankPenalty α β γ

structure AsymptoticParameters (δ α β γ u : ℝ) : Prop where
  distance_pos : 0 < δ
  distance_lt_half : δ < (1 : ℝ) / 2
  weight_gt_distance : δ / 2 < α
  weight_lt_half : α < (1 : ℝ) / 2
  support_nonneg : 0 ≤ β
  support_lt_half : β < α / 2
  complement_nonneg : 0 ≤ γ
  complement_lt_half : γ < (1 - α) / 2
  first_lt_degree : β + γ < u
  degree_lt_weight : u < α
  degree_lt_left : u < α - β + γ
  degree_lt_right : u < 1 - α + β - γ

def IsSpectrallyFeasible (δ α β γ u : ℝ) : Prop :=
  asymptoticThreshold δ α < spectralLimit α β γ u

def Feasible (δ α β γ u : ℝ) : Prop :=
  AsymptoticParameters δ α β γ u ∧
    IsSpectrallyFeasible δ α β γ u

def rateSet (δ : ℝ) : Set ℝ :=
  {r | ∃ α β γ u : ℝ,
    Feasible δ α β γ u ∧ r = shellRate α β γ u}

def variationalRate (δ : ℝ) : ℝ := sInf (rateSet δ)

def combinedVariationalRate (δ : ℝ) : ℝ :=
  min (MetricCodes.Hamming.variationalRate δ) (variationalRate δ)

def mrrwG (v : ℝ) : ℝ :=
  MetricCodes.binaryEntropy ((1 - Real.sqrt (1 - v)) / 2)

def mrrwObjective (δ r : ℝ) : ℝ :=
  1 + mrrwG (r ^ 2) - mrrwG (r ^ 2 + 2 * δ * r + 2 * δ)

def mrrwRateSet (δ : ℝ) : Set ℝ :=
  {t | ∃ r : ℝ, 0 ≤ r ∧ r ≤ 1 - 2 * δ ∧
    t = mrrwObjective δ r}

def mrrwRate (δ : ℝ) : ℝ := sInf (mrrwRateSet δ)

theorem main_binary_theorem {δ : ℝ}
    (hδ : 0 < δ) (hhalf : δ < (1 : ℝ) / 2) :
    MetricCodes.Hamming.binaryRate δ ≤ combinedVariationalRate δ ∧
      combinedVariationalRate δ < mrrwRate δ := by
  sorry

end Johnson

end MetricCodes

namespace SpherePacking

abbrev Euclidean (n : ℕ) := EuclideanSpace ℝ (Fin n)

structure SphericalCode (n : ℕ) (s : ℝ) where
  points : Finset (Euclidean n)
  unit_norm : ∀ x ∈ points, ‖x‖ = 1
  inner_le : ∀ x ∈ points, ∀ y ∈ points, x ≠ y →
    ⟪x, y⟫_ℝ ≤ s

def sphericalCodeNumber (n : ℕ) (s : ℝ) : ℕ∞ :=
  ⨆ C : SphericalCode n s, (C.points.card : ℕ∞)

def kissingNumber (n : ℕ) : ℕ∞ :=
  sphericalCodeNumber n ((1 : ℝ) / 2)

end SpherePacking

namespace MetricCodes

namespace Spherical

def Feasible (s a b : ℝ) : Prop :=
  0 < b ∧ b < a ∧ s < 2 * MetricCodes.Gamma a b

def rateSet (s : ℝ) : Set ℝ :=
  {r | ∃ a b : ℝ, Feasible s a b ∧
    r = MetricCodes.sphericalEntropy a - MetricCodes.sphericalEntropy b}

def variationalRate (s : ℝ) : ℝ := sInf (rateSet s)

namespace SidelnikovLocalization

def sliceCost (s t : ℝ) : ℝ :=
  (1 / 2 : ℝ) * Real.logb 2 ((1 - t) / (1 - s))

def localizedEnvelope (κ : ℝ → ℝ) (s : ℝ) : ℝ :=
  sInf ((fun t => κ t + sliceCost s t) '' Set.Icc 0 s)

end SidelnikovLocalization

namespace HigherHierarchy

def quadraticCoordinate (u : ℝ) : ℝ := u * (1 + u)

def spectralAtom (u : ℝ) : ℝ :=
  Real.sqrt (quadraticCoordinate u) / (1 + 2 * u)

def Interlacing {r : ℕ}
    (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ) : Prop :=
  0 ≤ a (Fin.last r) ∧
    ∀ i : Fin r, a i.castSucc > b i ∧ b i > a i.succ

def lagrangeNumerator {r : ℕ}
    (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ)
    (ℓ : Fin (r + 1)) : ℝ :=
  ∏ m : Fin r, (quadraticCoordinate (a ℓ) - quadraticCoordinate (b m))

def lagrangeDenominator {r : ℕ}
    (a : Fin (r + 1) → ℝ) (ℓ : Fin (r + 1)) : ℝ :=
  ∏ m : Fin r,
    (quadraticCoordinate (a ℓ) - quadraticCoordinate (a (ℓ.succAbove m)))

def lagrangeWeight {r : ℕ}
    (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ)
    (ℓ : Fin (r + 1)) : ℝ :=
  lagrangeNumerator a b ℓ / lagrangeDenominator a ℓ

def Gamma {r : ℕ}
    (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ) : ℝ :=
  ∑ ℓ : Fin (r + 1), lagrangeWeight a b ℓ * spectralAtom (a ℓ)

def Phi {r : ℕ}
    (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ) : ℝ :=
  (∑ ℓ : Fin (r + 1), MetricCodes.sphericalEntropy (a ℓ)) -
    ∑ m : Fin r, MetricCodes.sphericalEntropy (b m)

def hierarchyRateSet (s : ℝ) : Set ℝ :=
  {z | ∃ (r : ℕ) (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ),
    Interlacing a b ∧ s < 2 * Gamma a b ∧ z = Phi a b}

def hierarchyVariationalRate (s : ℝ) : ℝ := sInf (hierarchyRateSet s)

def closedHierarchyRateSet (s : ℝ) : Set ℝ :=
  {z | ∃ (r : ℕ) (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ),
    Interlacing a b ∧ s ≤ 2 * Gamma a b ∧ z = Phi a b}

def closedHierarchyVariationalRate (s : ℝ) : ℝ :=
  sInf (closedHierarchyRateSet s)

def sphericalCodeRate (s : ℝ) : ℝ :=
  Filter.limsup
    (fun n : ℕ =>
      Real.logb 2
        ((SpherePacking.sphericalCodeNumber n s).toNat : ℝ) / (n : ℝ))
    Filter.atTop

def levelRateSet (r : ℕ) (s : ℝ) : Set ℝ :=
  {R | ∃ (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ),
    Interlacing a b ∧ s < 2 * Gamma a b ∧ R = Phi a b}

def levelRate (r : ℕ) (s : ℝ) : ℝ := sInf (levelRateSet r s)

def localizedLevelRate (r : ℕ) (s : ℝ) : ℝ :=
  SidelnikovLocalization.localizedEnvelope (levelRate r) s

def localizedHierarchyRate (s : ℝ) : ℝ :=
  sInf (Set.range fun r : ℕ => localizedLevelRate r s)

def localizedRowRate (s : ℝ) : ℝ :=
  SidelnikovLocalization.localizedEnvelope
    MetricCodes.Spherical.variationalRate s

def classicalLocalizedRate (s : ℝ) : ℝ :=
  SidelnikovLocalization.localizedEnvelope
    (fun t => MetricCodes.sphericalEntropy (MetricCodes.classicalThreshold t)) s

theorem main_general {s : ℝ} (hs : 0 < s) (hs' : s < 1) :
    (∀ {r : ℕ} {R : ℝ}
      (a : Fin (r + 1) → ℝ) (b : Fin r → ℝ),
      Interlacing a b → s < 2 * Gamma a b → Phi a b < R →
        ∀ᶠ n : ℕ in atTop, ∀ C : SpherePacking.SphericalCode n s,
          (C.points.card : ℝ) < (2 : ℝ) ^ (R * (n : ℝ))) ∧
      sphericalCodeRate s ≤ closedHierarchyVariationalRate s := by
  sorry

theorem strict_hierarchy {s : ℝ} (hs : 0 < s) (hs' : s < 1) :
    (∀ r : ℕ,
      levelRate (r + 1) s < levelRate r s ∧
        localizedLevelRate (r + 1) s < localizedLevelRate r s) ∧
      sphericalCodeRate s ≤ localizedHierarchyRate s ∧
      localizedHierarchyRate s < localizedLevelRate 1 s ∧
      localizedLevelRate 1 s < localizedRowRate s ∧
      localizedRowRate s < localizedLevelRate 0 s ∧
      localizedLevelRate 0 s = classicalLocalizedRate s := by
  sorry

namespace NumericalMaximum

theorem eventually_kissingNumber_lt_published :
    ∀ᶠ n : ℕ in atTop,
      ((SpherePacking.kissingNumber n).toNat : ℝ) ≤
        (2 : ℝ) ^ ((0.39661 : ℝ) * (n : ℝ)) := by
  sorry

end NumericalMaximum

end HigherHierarchy

end Spherical

end MetricCodes

end
C

Proving something is genuinely hard

Foundational

The permanent is a number you compute from a grid. It looks almost the same as another number called the determinant, which is easy. The permanent is believed to be brutally hard. This proves any shortcut formula has to be big.

Where it shows up

This is the algebra version of the famous P vs NP question. It also connects to quantum computers: some quantum advantage experiments work because this exact number is so hard.

So what

Real progress on a very old problem. The goal is much further away, and this is one step.

You must read this yourself3.4 KB
follows automatically once you accept it 1,105 KB · you audit 0.30%
Show the technical statement

Formal name: Permanent lower bounds for formulas with division. Certifies 2 theorems in Permanent.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • PermanentFormulaLowerBound.permanent_divisionFree_formula_logarithmic_lower_bound
  • PermanentFormulaLowerBound.permanent_rational_formula_logarithmic_lower_bound

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

namespace PermanentFormulaLowerBound

universe u v w

inductive Formula (ι : Type u) (R : Type v) where
  | var : ι → Formula ι R
  | const : R → Formula ι R
  | add : Formula ι R → Formula ι R → Formula ι R
  | sub : Formula ι R → Formula ι R → Formula ι R
  | mul : Formula ι R → Formula ι R → Formula ι R

namespace Formula

variable {ι : Type u} {R : Type v}

noncomputable def eval [CommRing R] : Formula ι R → MvPolynomial ι R
  | .var i => MvPolynomial.X i
  | .const c => MvPolynomial.C c
  | .add f g => eval f + eval g
  | .sub f g => eval f - eval g
  | .mul f g => eval f * eval g

def variableLeaves : Formula ι R → ℕ
  | .var _ => 1
  | .const _ => 0
  | .add f g => variableLeaves f + variableLeaves g
  | .sub f g => variableLeaves f + variableLeaves g
  | .mul f g => variableLeaves f + variableLeaves g

end Formula

inductive RationalFormula (ι : Type u) (R : Type v) where
  | var : ι → RationalFormula ι R
  | const : R → RationalFormula ι R
  | add : RationalFormula ι R → RationalFormula ι R → RationalFormula ι R
  | sub : RationalFormula ι R → RationalFormula ι R → RationalFormula ι R
  | mul : RationalFormula ι R → RationalFormula ι R → RationalFormula ι R
  | div : RationalFormula ι R → RationalFormula ι R → RationalFormula ι R

namespace RationalFormula

variable {ι : Type u} {R : Type v}

noncomputable def eval [Field R] :
    RationalFormula ι R → FractionRing (MvPolynomial ι R)
  | .var i =>
      algebraMap (MvPolynomial ι R) (FractionRing (MvPolynomial ι R))
        (MvPolynomial.X i)
  | .const c =>
      algebraMap (MvPolynomial ι R) (FractionRing (MvPolynomial ι R))
        (MvPolynomial.C c)
  | .add f g => eval f + eval g
  | .sub f g => eval f - eval g
  | .mul f g => eval f * eval g
  | .div f g => eval f / eval g

inductive Valid [Field R] : RationalFormula ι R → Prop where
  | var (i : ι) : Valid (.var i)
  | const (c : R) : Valid (.const c)
  | add {f g : RationalFormula ι R} : Valid f → Valid g → Valid (.add f g)
  | sub {f g : RationalFormula ι R} : Valid f → Valid g → Valid (.sub f g)
  | mul {f g : RationalFormula ι R} : Valid f → Valid g → Valid (.mul f g)
  | div {f g : RationalFormula ι R} :
      Valid f → Valid g → eval g ≠ 0 → Valid (.div f g)

def variableLeaves : RationalFormula ι R → ℕ
  | .var _ => 1
  | .const _ => 0
  | .add f g => variableLeaves f + variableLeaves g
  | .sub f g => variableLeaves f + variableLeaves g
  | .mul f g => variableLeaves f + variableLeaves g
  | .div f g => variableLeaves f + variableLeaves g

end RationalFormula

noncomputable def permanentPolynomial (n : ℕ) :
    MvPolynomial (Fin n × Fin n) ℂ :=
  (Matrix.mvPolynomialX (Fin n) (Fin n) ℂ).permanent

theorem permanent_divisionFree_formula_logarithmic_lower_bound
    {n : ℕ} (hn : 32 ≤ n)
    (f : Formula (Fin n × Fin n) ℂ)
    (hf : Formula.eval f = permanentPolynomial n) :
    (n : ℝ) ^ 4 / (128 * Real.logb 2 (n : ℝ)) ≤
      (Formula.variableLeaves f : ℝ) := by
  sorry

theorem permanent_rational_formula_logarithmic_lower_bound
    {n : ℕ} (hn : 32 ≤ n)
    (f : RationalFormula (Fin n × Fin n) ℂ)
    (hvalid : RationalFormula.Valid f)
    (hf : RationalFormula.eval f =
      algebraMap (MvPolynomial (Fin n × Fin n) ℂ)
        (FractionRing (MvPolynomial (Fin n × Fin n) ℂ))
        (permanentPolynomial n)) :
    (n : ℝ) ^ 4 / (192 * Real.logb 2 (n : ℝ)) ≤
      (RationalFormula.variableLeaves f : ℝ) := by
  sorry

end PermanentFormulaLowerBound
D

A rule that finally broke

Pure math

Mathematicians study infinite structures called groups. Many can be closely copied by finite ones. Those are called sofic. Nobody had ever found a group that was not sofic. This builds one.

Where it shows up

Pure math, no product. But a lot of published theorems start with the words “for sofic groups.” Nobody knew if that phrase ruled anything out.

So what

Now it does. A whole shelf of results just learned where its own edge is.

You must read this yourself1.0 KB
follows automatically once you accept it 1,312 KB · you audit 0.08%
Show the technical statement

Formal name: Existence of a finitely presented non-sofic group. Certifies 1 theorem in NonSoficGroup.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • SoficGroups.SourceTopLevelCompressionFinal.exists_finitelyPresented_nonsofic_group

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

noncomputable section

namespace SoficGroups

def normalizedHamming {Y : Type*} [Fintype Y] [DecidableEq Y]
    (p q : Equiv.Perm Y) : ℝ :=
  (hammingDist (fun y => p y) (fun y => q y) : ℝ) / Fintype.card Y

structure PermutationModel (G : Type*) [Group G] where
  size : ℕ
  size_pos : 0 < size
  action : G → Equiv.Perm (Fin size)
  map_one : action 1 = 1

structure GoodOn {G : Type*} [Group G]
    (M : PermutationModel G) (F : Finset G) (ε : ℝ) : Prop where
  multiplicative : ∀ g ∈ F, ∀ h ∈ F,
    normalizedHamming (M.action (g * h)) (M.action g * M.action h) < ε
  separated : ∀ g ∈ F, g ≠ 1 →
    1 - ε < normalizedHamming (M.action g) 1

class Sofic (G : Type*) [Group G] : Prop where
  approximation : ∀ (F : Finset G) (ε : ℝ), 0 < ε → ε < 1 →
    ∃ M : PermutationModel G, GoodOn M F ε

namespace SourceTopLevelCompressionFinal

theorem exists_finitelyPresented_nonsofic_group :
    ∃ (G : Type) (_ : Group G),
      Group.IsFinitelyPresented G ∧ ¬ SoficGroups.Sofic G := by
  sorry

end SourceTopLevelCompressionFinal

end SoficGroups

end
E

Does the copy remember the original?

Pure math

You can turn a group into a different kind of object. People believed the new object always remembers exactly which group it came from. This finds infinitely many different groups that all turn into the same thing.

Where it shows up

Pure math. These objects are used in the language of quantum physics, which makes it tempting to oversell. It does not change quantum computing or physics practice.

So what

It ends a hope that a research area had held for about 40 years.

You must read this yourself6.9 KB
follows automatically once you accept it 1,415 KB · you audit 0.49%
Show the technical statement

Formal name: Infinitely many nonisomorphic property-(T) groups with isomorphic factors. Certifies 2 theorems in ConnesRigidity.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • ConnesRigidity.exists_nonisomorphic_propertyT_icc_groups_with_isomorphic_factors
  • ConnesRigidity.exists_infinite_pairwise_nonisomorphic_propertyT_icc_groups_with_isomorphic_factors

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

namespace ConnesRigidity

universe u v

structure CountableDiscreteGroup where
  Carrier : Type u
  group : Group Carrier
  countable : Countable Carrier

namespace CountableDiscreteGroup

instance : CoeSort CountableDiscreteGroup (Type u) :=
  ⟨CountableDiscreteGroup.Carrier⟩

attribute [instance] group countable

end CountableDiscreteGroup

def conjugacyClass (G : CountableDiscreteGroup) (g : G) : Set G :=
  {h | ∃ x : G, h = x * g * x⁻¹}

def IsICC (G : CountableDiscreteGroup) : Prop :=
  Infinite G ∧ ∀ g : G, g ≠ 1 → Set.Infinite (conjugacyClass G g)

def GroupsIsomorphic (G H : CountableDiscreteGroup) : Prop :=
  Nonempty (G ≃* H)

abbrev UnitaryRepresentation
    (G : Type u) [Group G]
    (H : Type u) [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] :=
  G →* unitary (H →L[ℂ] H)

namespace UnitaryRepresentation

variable {G H : Type u} [Group G]
  [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]

def IsInvariant (π : UnitaryRepresentation G H) (ξ : H) : Prop :=
  ∀ g : G, (π g : H →L[ℂ] H) ξ = ξ

def HasAlmostInvariantUnitVectors (π : UnitaryRepresentation G H) : Prop :=
  ∀ (K : Finset G) (ε : ℝ), 0 < ε →
    ∃ ξ : H, ‖ξ‖ = 1 ∧ ∀ g ∈ K, ‖(π g : H →L[ℂ] H) ξ - ξ‖ < ε

end UnitaryRepresentation

def HasKazhdanPropertyT (G : CountableDiscreteGroup.{u}) : Prop :=
  ∀ (H : Type u)
    (_ : NormedAddCommGroup H)
    (_ : InnerProductSpace ℂ H)
    (_ : CompleteSpace H)
    (π : UnitaryRepresentation G H),
    π.HasAlmostInvariantUnitVectors →
      ∃ ξ : H, ξ ≠ 0 ∧ π.IsInvariant ξ

noncomputable section

open scoped NNReal ENNReal

abbrev GroupL2 (G : Type u) := lp (fun _ : G ↦ ℂ) 2

def l2Reindex {α : Type u} {β : Type v} (e : α ≃ β) :
    GroupL2 α ≃ₗᵢ[ℂ] GroupL2 β where
  toLinearEquiv :=
    { toFun := fun f ↦ ⟨(fun j : β ↦ f (e.symm j)), by
        change Memℓp (fun j : β ↦ f (e.symm j)) 2
        rw [memℓp_gen_iff (by norm_num : 0 < (2 : ℝ≥0∞).toReal)]
        exact (e.symm.summable_iff).2
          ((lp.memℓp f).summable (by norm_num : 0 < (2 : ℝ≥0∞).toReal))⟩
      invFun := fun f ↦ ⟨(fun j : α ↦ f (e j)), by
        change Memℓp (fun j : α ↦ f (e j)) 2
        rw [memℓp_gen_iff (by norm_num : 0 < (2 : ℝ≥0∞).toReal)]
        exact e.summable_iff.mpr
          ((lp.memℓp f).summable (by norm_num : 0 < (2 : ℝ≥0∞).toReal))⟩
      left_inv := by
        intro f
        ext i
        change f (e.symm (e i)) = f i
        simp
      right_inv := by
        intro f
        ext j
        change f (e (e.symm j)) = f j
        simp
      map_add' := by
        intro f g
        ext j
        rfl
      map_smul' := by
        intro c f
        ext j
        rfl }
  norm_map' := by
    intro f
    rw [lp.norm_eq_tsum_rpow (by norm_num : 0 < (2 : ℝ≥0∞).toReal)]
    rw [lp.norm_eq_tsum_rpow (by norm_num : 0 < (2 : ℝ≥0∞).toReal)]
    congr 1
    exact e.symm.tsum_eq (fun i ↦ ‖f i‖ ^ (2 : ℝ≥0∞).toReal)

def leftRegularUnitary {G : Type u} [Group G] (g : G) :
    unitary (GroupL2 G →L[ℂ] GroupL2 G) :=
  Unitary.linearIsometryEquiv.symm (l2Reindex (Equiv.mulLeft g))

def leftRegularRepresentation (G : Type u) [Group G] :
    G →* unitary (GroupL2 G →L[ℂ] GroupL2 G) where
  toFun := leftRegularUnitary
  map_one' := by
    apply Subtype.ext
    apply ContinuousLinearMap.ext
    intro f
    ext h
    change f ((1 : G)⁻¹ * h) = f h
    simp
  map_mul' g h := by
    apply Subtype.ext
    apply ContinuousLinearMap.ext
    intro f
    ext k
    change f ((g * h)⁻¹ * k) = f (h⁻¹ * (g⁻¹ * k))
    simp [mul_assoc]

def vonNeumannClosure
    {H : Type u} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H]
    (S : Set (H →L[ℂ] H)) :
    VonNeumannAlgebra H where
  toStarSubalgebra :=
    StarSubalgebra.centralizer ℂ (StarSubalgebra.centralizer ℂ S : Set (H →L[ℂ] H))
  centralizer_centralizer' := by
    change
      Set.centralizer
          (Set.centralizer
            ((StarSubalgebra.centralizer ℂ
              (StarSubalgebra.centralizer ℂ S : Set (H →L[ℂ] H))) :
                Set (H →L[ℂ] H))) =
        ((StarSubalgebra.centralizer ℂ
          (StarSubalgebra.centralizer ℂ S : Set (H →L[ℂ] H))) :
            Set (H →L[ℂ] H))
    rw [StarSubalgebra.coe_centralizer_centralizer]
    exact Set.centralizer_centralizer_centralizer ((S ∪ star S).centralizer)

def groupVonNeumannAlgebra (G : CountableDiscreteGroup.{u}) :
    VonNeumannAlgebra (GroupL2 G) :=
  vonNeumannClosure (Set.range fun g : G ↦
    (leftRegularRepresentation G g : GroupL2 G →L[ℂ] GroupL2 G))

abbrev GroupVonNeumannAlgebra (G : CountableDiscreteGroup.{u}) :=
  (groupVonNeumannAlgebra G).toStarSubalgebra

def delta (G : CountableDiscreteGroup.{u}) (g : G) : GroupL2 G :=
  by
    classical
    exact lp.single 2 g 1

def canonicalTrace (G : CountableDiscreteGroup.{u}) :
    GroupVonNeumannAlgebra G → ℂ :=
  fun x ↦ inner ℂ (delta G 1) ((x : GroupL2 G →L[ℂ] GroupL2 G) (delta G 1))

def ProjectionLE {A : Type u} [Mul A] (p q : A) : Prop :=
  p * q = p

def IsProjectionSupremum {A : Type u} [Mul A] [Star A]
    (S : Set A) (p : A) : Prop :=
  IsStarProjection p ∧
    (∀ q ∈ S, IsStarProjection q ∧ ProjectionLE q p) ∧
    ∀ r, IsStarProjection r → (∀ q ∈ S, ProjectionLE q r) → ProjectionLE p r

def IsNormalStarAlgEquiv
    {A : Type u} {B : Type v}
    [Semiring A] [StarRing A] [Algebra ℂ A] [StarModule ℂ A]
    [Semiring B] [StarRing B] [Algebra ℂ B] [StarModule ℂ B]
    (e : A ≃⋆ₐ[ℂ] B) : Prop :=
  (∀ (S : Set A) (p : A), IsProjectionSupremum S p →
    IsProjectionSupremum (e '' S) (e p)) ∧
  ∀ (S : Set B) (p : B), IsProjectionSupremum S p →
    IsProjectionSupremum (e.symm '' S) (e.symm p)

structure TracialGroupFactorEquiv
    (G : CountableDiscreteGroup.{u}) (H : CountableDiscreteGroup.{v}) where
  toStarAlgEquiv :
    GroupVonNeumannAlgebra G ≃⋆ₐ[ℂ] GroupVonNeumannAlgebra H
  normal : IsNormalStarAlgEquiv toStarAlgEquiv
  trace_preserving :
    ∀ x, canonicalTrace H (toStarAlgEquiv x) = canonicalTrace G x

def TracialGroupFactorsIsomorphic
    (G : CountableDiscreteGroup.{u}) (H : CountableDiscreteGroup.{v}) : Prop :=
  Nonempty (TracialGroupFactorEquiv G H)

end

end ConnesRigidity

namespace ConnesRigidity

open ConnesRigidity

theorem exists_nonisomorphic_propertyT_icc_groups_with_isomorphic_factors :
    ∃ Γ Λ : CountableDiscreteGroup.{0},
      Group.FG Γ ∧ Group.FG Λ ∧
      IsICC Γ ∧ HasKazhdanPropertyT Γ ∧
      IsICC Λ ∧ HasKazhdanPropertyT Λ ∧
      TracialGroupFactorsIsomorphic Γ Λ ∧
      ¬ GroupsIsomorphic Γ Λ := by
  sorry

theorem
    exists_infinite_pairwise_nonisomorphic_propertyT_icc_groups_with_isomorphic_factors :
    ∃ (Λ : CountableDiscreteGroup.{0}) (Γ : ℕ → CountableDiscreteGroup.{0}),
      Group.FG Λ ∧
      (∀ n, Group.FG (Γ n)) ∧
      IsICC Λ ∧
      (∀ n, IsICC (Γ n)) ∧
      HasKazhdanPropertyT Λ ∧
      (∀ n, HasKazhdanPropertyT (Γ n)) ∧
      (∀ n, TracialGroupFactorsIsomorphic (Γ n) Λ) ∧
      (∀ m n, TracialGroupFactorsIsomorphic (Γ m) (Γ n)) ∧
      (∀ ⦃m n : ℕ⦄, m ≠ n → ¬ GroupsIsomorphic (Γ m) (Γ n)) ∧
      (∀ n, ¬ GroupsIsomorphic Λ (Γ n)) := by
  sorry

end ConnesRigidity
F

How big can a shape get?

Pure math

Take a shape with only one grid dot inside it, sitting right at its balance point. There is a hard limit on how big that shape can be. This proves the exact limit, and a simple triangle-like shape hits it.

Where it shows up

Pure math. Grids and shapes are the backdrop for some optimization problems, but no solver gets faster from this.

So what

A clean 59-year-old question, fully closed.

You must read this yourself2.0 KB
follows automatically once you accept it 2,113 KB · you audit 0.09%
Show the technical statement

Formal name: Sharp Ehrhart volume inequality. Certifies 4 theorems in EhrhartVolumeInequality.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • Ehrhart.Volume.ehrhart_volume_inequality_for_sets
  • Ehrhart.SimplexVolume.exists_centeredBody_sharp
  • Ehrhart.SimplexVolume.barycenter_centeredSimplex
  • Ehrhart.SimplexVolume.normalizedVolume_centeredSimplex

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

noncomputable section

open Set MeasureTheory
open scoped BigOperators ENNReal

namespace Ehrhart

abbrev Space (n : ℕ) := Fin n → ℝ

def integerPoint (n : ℕ) (z : Fin n → ℤ) : Space n :=
  fun i => (z i : ℝ)

def standardSimplex (n : ℕ) : Set (Space n) :=
  {x | (∀ i, 0 ≤ x i) ∧ (∑ i, x i) ≤ 1}

def simplexDilation (n : ℕ) (x : Space n) : Space n :=
  fun i => ((n : ℝ) + 1) * x i - 1

def centeredSimplex (n : ℕ) : Set (Space n) :=
  simplexDilation n '' standardSimplex n

def normalizedVolume {n : ℕ} (K : Set (Space n)) : ℝ :=
  ((volume : Measure (Space n)) K).toReal

def barycenter {n : ℕ} (K : Set (Space n)) : Space n :=
  (normalizedVolume K)⁻¹ • ∫ x in K, x ∂(volume : Measure (Space n))

def interiorLatticePoints {n : ℕ} (K : Set (Space n)) : Set (Fin n → ℤ) :=
  {z | integerPoint n z ∈ interior K}

structure CenteredBody (n : ℕ) where
  carrier : Set (Space n)
  convex : Convex ℝ carrier
  compact : IsCompact carrier
  fullDimensional : (interior carrier).Nonempty
  centered : barycenter carrier = 0
  uniqueInteriorLatticePoint : interiorLatticePoints carrier = {0}

def sharpConstant (n : ℕ) : ℝ :=
  ((n : ℝ) + 1) ^ n / (n.factorial : ℝ)

end Ehrhart

namespace Ehrhart.SimplexVolume

theorem barycenter_centeredSimplex (n : ℕ) :
    barycenter (centeredSimplex n) = 0 := by
  sorry

theorem normalizedVolume_centeredSimplex (n : ℕ) (_hn : 0 < n) :
    normalizedVolume (centeredSimplex n) = sharpConstant n := by
  sorry

theorem exists_centeredBody_sharp (n : ℕ) (hn : 0 < n) :
    ∃ K : CenteredBody n,
      normalizedVolume K.carrier = sharpConstant n := by
  sorry

end Ehrhart.SimplexVolume

namespace Ehrhart.Volume

theorem ehrhart_volume_inequality_for_sets
    {n : ℕ} (hn : 0 < n) (S : Set (Space n))
    (hconvex : Convex ℝ S)
    (hcompact : IsCompact S)
    (hinterior : (interior S).Nonempty)
    (hcentered : barycenter S = 0)
    (hlattice : interiorLatticePoints S = {0}) :
    normalizedVolume S ≤
      ((n : ℝ) + 1) ^ n / (n.factorial : ℝ) := by
  sorry

end Ehrhart.Volume

end
G

Making cheating exponentially harder

Touches real systems

Say a security test can be cheated 99 times out of 100. Run it many times at once and cheating should get very unlikely, very fast. That was known for normal players. This proves it for players sharing quantum entanglement, for any such game.

Where it shows up

This is the standard move for hardening security protocols. It matters for quantum money, quantum zero-knowledge proofs, and quantum key sharing.

So what

If quantum networks get built, designers get one general tool instead of solving it case by case. That is a later payoff, not a today payoff.

You must read this yourself4.4 KB
follows automatically once you accept it 2,621 KB · you audit 0.17%
Show the technical statement

Formal name: Uniform exponential quantum parallel repetition. Certifies 2 theorems in QuantumParallelRepetition.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • QuantumParallelRepetition.distributionUniformExponential
  • QuantumParallelRepetition.standardQuantumParallelRepetition

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

noncomputable section

open scoped BigOperators ComplexOrder Kronecker MatrixOrder
open Matrix

namespace QuantumParallelRepetition

variable {X Y A B : Type*}

structure Game (X Y A B : Type*)
    [Fintype X] [Fintype Y] [Fintype A] [Fintype B] where
  questionWeight : X → Y → ℝ
  weight_nonneg : ∀ x y, 0 ≤ questionWeight x y
  weight_normalized : (∑ x : X, ∑ y : Y, questionWeight x y) = 1
  predicate : X → Y → A → B → Bool

namespace Game

variable [Fintype X] [Fintype Y] [Fintype A] [Fintype B]

def «repeat» (G : Game X Y A B) (n : ℕ) :
    Game (Fin n → X) (Fin n → Y) (Fin n → A) (Fin n → B) where
  questionWeight xs ys := ∏ i : Fin n, G.questionWeight (xs i) (ys i)
  weight_nonneg xs ys :=
    Finset.prod_nonneg fun i _ => G.weight_nonneg (xs i) (ys i)
  weight_normalized := by
    classical
    calc
      (∑ xs : Fin n → X, ∑ ys : Fin n → Y,
        ∏ i : Fin n, G.questionWeight (xs i) (ys i)) =
          ∑ xs : Fin n → X, ∏ i : Fin n, ∑ y : Y,
            G.questionWeight (xs i) y := by
              apply Finset.sum_congr rfl
              intro xs _
              exact (Fintype.prod_sum
                (fun i : Fin n => fun y : Y => G.questionWeight (xs i) y)).symm
      _ = ∏ _i : Fin n, ∑ x : X, ∑ y : Y,
            G.questionWeight x y := by
              exact (Fintype.prod_sum
                (fun _i : Fin n => fun x : X => ∑ y : Y,
                  G.questionWeight x y)).symm
      _ = 1 := by simp [G.weight_normalized]
  predicate xs ys as bs :=
    decide (∀ i : Fin n, G.predicate (xs i) (ys i) (as i) (bs i) = true)

end Game

structure DensityMatrix (d : Type*) [Fintype d] where
  matrix : Matrix d d ℂ
  positive : matrix.PosSemidef
  trace_one : Matrix.trace matrix = 1

structure POVM (ι d : Type*) [Fintype ι] [Fintype d] [DecidableEq d] where
  effect : ι → Matrix d d ℂ
  positive : ∀ i, (effect i).PosSemidef
  complete : (∑ i : ι, effect i) = 1

structure Strategy [Fintype X] [Fintype Y] [Fintype A] [Fintype B]
    (_G : Game X Y A B) where
  Alice : Type
  Bob : Type
  [alice_fintype : Fintype Alice]
  [bob_fintype : Fintype Bob]
  [alice_decidableEq : DecidableEq Alice]
  [bob_decidableEq : DecidableEq Bob]
  state : DensityMatrix (Alice × Bob)
  aliceMeasurement : X → POVM A Alice
  bobMeasurement : Y → POVM B Bob

attribute [instance] Strategy.alice_fintype Strategy.bob_fintype
  Strategy.alice_decidableEq Strategy.bob_decidableEq

namespace Strategy

variable [Fintype X] [Fintype Y] [Fintype A] [Fintype B]
variable {G : Game X Y A B}

def jointEffect (S : Strategy G) (x : X) (y : Y) (a : A) (b : B) :
    Matrix (S.Alice × S.Bob) (S.Alice × S.Bob) ℂ :=
  (S.aliceMeasurement x).effect a ⊗ₖ (S.bobMeasurement y).effect b

def outcomeProbability (S : Strategy G) (x : X) (y : Y) (a : A) (b : B) : ℝ :=
  (Matrix.trace (S.state.matrix * S.jointEffect x y a b)).re

def winProbability (S : Strategy G) : ℝ :=
  ∑ x : X, ∑ y : Y, G.questionWeight x y *
    ∑ a : A, ∑ b : B,
      if G.predicate x y a b = true then S.outcomeProbability x y a b else 0

end Strategy

def entangledValue [Fintype X] [Fintype Y] [Fintype A] [Fintype B]
    (G : Game X Y A B) : ℝ :=
  sSup (Set.range (Strategy.winProbability (G := G)))

def repeatedEntangledValue [Fintype X] [Fintype Y] [Fintype A] [Fintype B]
    (G : Game X Y A B) (n : ℕ) : ℝ :=
  entangledValue (G.repeat n)

def HasExponentialBound (v : ℕ → ℝ) : Prop :=
  ∃ c : ℝ, 0 < c ∧ ∃ C : ℝ, 0 < C ∧
    ∀ n : ℕ, v n ≤ C * Real.exp (-c * (n : ℝ))

variable [Fintype X] [Fintype Y] [Fintype A] [Fintype B]

def StandardQuantumParallelRepetition (G : Game X Y A B) : Prop :=
  entangledValue G < 1 →
    HasExponentialBound (repeatedEntangledValue G)

theorem distributionUniformExponential :
    ∃ c : ℝ, 0 < c ∧
      ∀ {X Y A B : Type}
        [Fintype X] [Fintype Y] [Fintype A] [Fintype B]
        (G : Game X Y A B),
        Nonempty A → Nonempty B →
        0 < 1 - entangledValue G →
        ∀ n : ℕ, 0 < n →
          repeatedEntangledValue G n ≤
            Real.exp
              (-(c *
                ((1 - entangledValue G) ^ 13 /
                  ((1 - entangledValue G) +
                    Real.log
                      ((Fintype.card A : ℝ) *
                        (Fintype.card B : ℝ))))) * (n : ℝ)) := by
  sorry

theorem standardQuantumParallelRepetition
    {X Y A B : Type}
    [Fintype X] [Fintype Y] [Fintype A] [Fintype B]
    (G : Game X Y A B) :
    StandardQuantumParallelRepetition G := by
  sorry

end QuantumParallelRepetition

end
H

Finding the nearest point in a grid

Foundational

Imagine a huge grid of points and a target that is not on it. Finding the nearest grid point is hard. This proves it stays hard even if you only need a rough answer, and the same for two related code problems.

Where it shows up

These are the named problems behind post-quantum cryptography, the encryption being rolled out now to survive quantum computers. Read the note below before you repeat that.

So what

A real milestone in complexity theory. Be careful with the crypto claim.

You must read this yourself10.2 KB
follows automatically once you accept it 5,210 KB · you audit 0.20%
Show the technical statement

Formal name: Polynomial-factor NP-hardness of the closest vector problem. Certifies 4 theorems in GapCVP.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • GapCVP.Comparator.gapCVP400IsNPHard
  • GapCVP.Comparator.binaryNearestCodewordIsNPHard
  • GapCVP.Comparator.binarySyndromeDecodingIsNPHard
  • GapCVP.Comparator.finitePNormGapCVPIsNPHard

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

noncomputable section

open scoped BigOperators

namespace GapCVP.BinaryEncoding

def lengthPrefixedWord (word : List Bool) : List Bool :=
  List.replicate word.length true ++ false :: word

def encodeAtomic {α : Type*} [Encodable α] (value : α) : List Bool :=
  lengthPrefixedWord (Computability.encodeNat (Encodable.encode value))

def encodeFinValues {α : Type*} [Encodable α] :
    (n : ℕ) → (Fin n → α) → List Bool
  | 0, _ => []
  | n + 1, values =>
      encodeAtomic (values 0) ++
        encodeFinValues n (fun i => values i.succ)

def encodeMatrixRows :
    (m n : ℕ) → (Fin m → Fin n → ℤ) → List Bool
  | 0, _, _ => []
  | m + 1, n, matrix =>
      encodeFinValues n (matrix 0) ++
        encodeMatrixRows m n (fun i => matrix i.succ)

end GapCVP.BinaryEncoding

namespace GapCVP

abbrev BitLanguage := List Bool → Bool

abbrev bitEncoding : List Bool → List Bool := id

def pairBitEncoding : (List Bool × List Bool) → List (Bool ⊕ Bool) :=
  (Computability.encodingProd
    (Computability.encodingList Bool)
    (Computability.encodingList Bool)).encode

abbrev BitTM (map : List Bool → List Bool) :=
  Turing.TM2ComputableInPolyTime bitEncoding bitEncoding map

abbrev VerifierTM (verifier : List Bool × List Bool → Bool) :=
  Turing.TM2ComputableInPolyTime
    pairBitEncoding Computability.encodeBool verifier

noncomputable def IsNP (language : BitLanguage) : Bool :=
  @decide
    (∃ (bound : Polynomial ℕ) (verifier : List Bool × List Bool → Bool),
      Nonempty (VerifierTM verifier) ∧
        ∀ input : List Bool,
          language input ↔ ∃ certificate : List Bool,
            certificate.length ≤ bound.eval input.length ∧
              verifier (input, certificate) = true)
    (Classical.propDecidable _)

end GapCVP

namespace GapCVP.Comparator

structure Instance where
  dimension : ℕ
  basis : Matrix (Fin dimension) (Fin dimension) ℤ
  target : Fin dimension → ℚ
  radius : ℚ

export GapCVP.BinaryEncoding
  (lengthPrefixedWord encodeAtomic encodeFinValues encodeMatrixRows)

export GapCVP (BitLanguage bitEncoding pairBitEncoding IsNP)

def encodeInstance (I : Instance) : List Bool :=
  encodeAtomic I.dimension ++
    encodeAtomic I.radius ++
    encodeFinValues I.dimension I.target ++
    encodeMatrixRows I.dimension I.dimension I.basis

def wellFormed (record : Instance) : Bool :=
  @decide
    (0 < record.dimension ∧ record.basis.det ≠ 0 ∧ 0 < record.radius)
    (Classical.propDecidable _)

def hasIntegerTarget (record : Instance) : Bool :=
  @decide
    (∀ index : Fin record.dimension,
      ∃ value : ℤ, record.target index = (value : ℚ))
    (Classical.propDecidable _)

noncomputable def distanceSquared (I : Instance)
    (vector : Fin I.dimension → ℤ) : ℝ :=
  ∑ i : Fin I.dimension,
    (((∑ j : Fin I.dimension,
      (I.basis i j : ℝ) * (vector j : ℝ)) -
        (I.target i : ℝ)) ^ 2)

noncomputable def gapFactor400 (I : Instance) : ℝ :=
  (I.dimension : ℝ) ^ ((1 : ℝ) / 400)

def gapYES400 (record : Instance) : Bool :=
  @decide
    (wellFormed record ∧
      ∃ vector : Fin record.dimension → ℤ,
        distanceSquared record vector ≤ (record.radius : ℝ) ^ 2)
    (Classical.propDecidable _)

def gapNO400 (record : Instance) : Bool :=
  @decide
    (wellFormed record ∧
      ∀ vector : Fin record.dimension → ℤ,
        (gapFactor400 record * (record.radius : ℝ)) ^ 2 <
          distanceSquared record vector)
    (Classical.propDecidable _)

def yesLanguage (bits : List Bool) : Bool :=
  @decide
    (∃ record : Instance,
      encodeInstance record = bits ∧
        hasIntegerTarget record ∧ gapYES400 record)
    (Classical.propDecidable _)

def noLanguage (bits : List Bool) : Bool :=
  @decide
    (∃ record : Instance,
      encodeInstance record = bits ∧
        hasIntegerTarget record ∧ gapNO400 record)
    (Classical.propDecidable _)

structure PromiseProblem where
  yes : BitLanguage
  no : BitLanguage
  disjoint : ∀ bits, yes bits → no bits → False

def gapCVP400Promise : PromiseProblem where
  yes := yesLanguage
  no := noLanguage
  disjoint := by sorry

structure PromiseReduction (language : BitLanguage) (problem : PromiseProblem) where
  map : List Bool → List Bool
  polynomial_time : Nonempty
    (BitTM map)
  completeness : ∀ input, language input → problem.yes (map input)
  soundness : ∀ input, ¬ language input → problem.no (map input)

def IsNPHardPromise (problem : PromiseProblem) : Bool :=
  @decide
    (∀ language : BitLanguage,
      IsNP language → Nonempty (PromiseReduction language problem))
    (Classical.propDecidable _)

theorem gapCVP400IsNPHard : IsNPHardPromise gapCVP400Promise := by
  sorry

structure BinaryNearestCodewordInstance where
  blockLength : ℕ
  generatorRank : ℕ
  generator : Fin blockLength → Fin generatorRank → ZMod 2
  target : Fin blockLength → ZMod 2
  radius : ℕ

def encodeBinaryNearestCodewordInstance
    (record : BinaryNearestCodewordInstance) : List Bool :=
  encodeAtomic record.blockLength ++
    encodeAtomic record.generatorRank ++
    encodeAtomic record.radius ++
    encodeFinValues record.blockLength
      (fun index => ((record.target index).val : ℤ)) ++
    encodeMatrixRows record.blockLength record.generatorRank
      (fun row column => ((record.generator row column).val : ℤ))

def binaryNearestCodeword
    (record : BinaryNearestCodewordInstance)
    (coefficients : Fin record.generatorRank → ZMod 2) :
    Fin record.blockLength → ZMod 2 :=
  fun index => ∑ column : Fin record.generatorRank,
    record.generator index column * coefficients column

def binaryNearestTarget (record : BinaryNearestCodewordInstance) :
    Fin record.blockLength → ZMod 2 :=
  record.target

noncomputable def binaryCodeGapFactor (blockLength : ℕ) : ℝ :=
  (blockLength : ℝ) ^ ((1 : ℝ) / 200)

noncomputable def binaryNearestCodewordPromise : PromiseProblem where
  yes bits :=
    @decide
      (∃ record : BinaryNearestCodewordInstance,
        encodeBinaryNearestCodewordInstance record = bits ∧
        0 < record.blockLength ∧ 0 < record.radius ∧
        ∃ coefficients : Fin record.generatorRank → ZMod 2,
          hammingNorm
            (binaryNearestTarget record -
              binaryNearestCodeword record coefficients) ≤ record.radius)
      (Classical.propDecidable _)
  no bits :=
    @decide
      (∃ record : BinaryNearestCodewordInstance,
        encodeBinaryNearestCodewordInstance record = bits ∧
        0 < record.blockLength ∧ 0 < record.radius ∧
        ∀ coefficients : Fin record.generatorRank → ZMod 2,
          binaryCodeGapFactor record.blockLength *
              (record.radius : ℝ) <
            (hammingNorm
              (binaryNearestTarget record -
                binaryNearestCodeword record coefficients) : ℝ))
      (Classical.propDecidable _)
  disjoint := by sorry

theorem binaryNearestCodewordIsNPHard :
    IsNPHardPromise binaryNearestCodewordPromise := by
  sorry

structure BinarySyndromeDecodingInstance where
  checkCount : ℕ
  blockLength : ℕ
  parityCheck : Fin checkCount → Fin blockLength → ZMod 2
  syndrome : Fin checkCount → ZMod 2
  radius : ℕ

def encodeBinarySyndromeDecodingInstance
    (record : BinarySyndromeDecodingInstance) : List Bool :=
  encodeAtomic record.checkCount ++
    encodeAtomic record.blockLength ++
    encodeAtomic record.radius ++
    encodeFinValues record.checkCount
      (fun row => ((record.syndrome row).val : ℤ)) ++
    encodeMatrixRows record.checkCount record.blockLength
      (fun row column => ((record.parityCheck row column).val : ℤ))

def binarySyndromeProduct
    (record : BinarySyndromeDecodingInstance)
    (word : Fin record.blockLength → ZMod 2) :
    Fin record.checkCount → ZMod 2 :=
  fun row => ∑ column : Fin record.blockLength,
    record.parityCheck row column * word column

def binarySyndromeTarget (record : BinarySyndromeDecodingInstance) :
    Fin record.checkCount → ZMod 2 :=
  record.syndrome

noncomputable def binarySyndromeDecodingPromise : PromiseProblem where
  yes bits :=
    @decide
      (∃ record : BinarySyndromeDecodingInstance,
        encodeBinarySyndromeDecodingInstance record = bits ∧
        0 < record.blockLength ∧ 0 < record.radius ∧
        ∃ word : Fin record.blockLength → ZMod 2,
          binarySyndromeProduct record word = binarySyndromeTarget record ∧
            hammingNorm word ≤ record.radius)
      (Classical.propDecidable _)
  no bits :=
    @decide
      (∃ record : BinarySyndromeDecodingInstance,
        encodeBinarySyndromeDecodingInstance record = bits ∧
        0 < record.blockLength ∧ 0 < record.radius ∧
        (∃ word : Fin record.blockLength → ZMod 2,
          binarySyndromeProduct record word = binarySyndromeTarget record) ∧
        ∀ word : Fin record.blockLength → ZMod 2,
          binarySyndromeProduct record word = binarySyndromeTarget record →
            binaryCodeGapFactor record.blockLength *
                (record.radius : ℝ) < (hammingNorm word : ℝ))
      (Classical.propDecidable _)
  disjoint := by sorry

theorem binarySyndromeDecodingIsNPHard :
    IsNPHardPromise binarySyndromeDecodingPromise := by
  sorry

noncomputable def finitePNorm (p : ℚ) {n : ℕ} (vector : Fin n → ℝ) : ℝ :=
  (∑ i : Fin n, |vector i| ^ (p : ℝ)) ^ ((p : ℝ)⁻¹)

noncomputable def finitePLatticeDiscrepancy (I : Instance)
    (vector : Fin I.dimension → ℤ) : Fin I.dimension → ℝ := fun i =>
  (I.target i : ℝ) -
    ∑ j : Fin I.dimension, (I.basis i j : ℝ) * (vector j : ℝ)

noncomputable def finitePLatticeDistance (p : ℚ) (I : Instance)
    (vector : Fin I.dimension → ℤ) : ℝ :=
  finitePNorm p (finitePLatticeDiscrepancy I vector)

noncomputable def finitePGapFactor (p : ℚ) (I : Instance) : ℝ :=
  (I.dimension : ℝ) ^ (((200 : ℝ) * (p : ℝ))⁻¹)

noncomputable def finitePGapCVPPromise (p : ℚ) (hp : 1 ≤ p) : PromiseProblem where
  yes bits :=
    @decide
      (∃ I : Instance,
        encodeInstance I = bits ∧
          wellFormed I ∧
          ∃ vector : Fin I.dimension → ℤ,
            finitePLatticeDistance p I vector ≤ (I.radius : ℝ))
      (Classical.propDecidable _)
  no bits :=
    @decide
      (∃ I : Instance,
        encodeInstance I = bits ∧
          wellFormed I ∧
          ∀ vector : Fin I.dimension → ℤ,
            finitePGapFactor p I * (I.radius : ℝ) <
              finitePLatticeDistance p I vector)
      (Classical.propDecidable _)
  disjoint := by sorry

theorem finitePNormGapCVPIsNPHard (p : ℚ) (hp : 1 ≤ p) :
    IsNPHardPromise (finitePGapCVPPromise p hp) := by
  sorry

end GapCVP.Comparator

end
I

When a pattern becomes unavoidable

Pure math

Color every line in a network using k colors. Make the network big enough and three dots must end up connected in one single color. How big? Faster than exponential in k. Much faster.

Where it shows up

Pure math. Erdős offered $100 to show one version of this number stays finite. The answer turned out to be the opposite.

So what

Closes a famous problem, and the answer surprised people.

You must read this yourself1.5 KB
follows automatically once you accept it 123 KB · you audit 1.21%
Show the technical statement

Formal name: Explicit superexponential lower bound for multicolor triangle Ramsey numbers. Certifies 4 theorems in MulticolorTriangleRamsey.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • ErdosProblems.MulticolourTriangleRamsey.erdos_183
  • ErdosProblems.MulticolourTriangleRamsey.erdos_problem_183_explicit
  • ErdosProblems.MulticolourTriangleRamsey.triangleRamseyNumber_log_sharp_coefficients
  • ErdosProblems.MulticolourTriangleRamsey.triangleRamseyNumber_log_isTheta

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

namespace ErdosProblems.MulticolourTriangleRamsey

open Filter Finset SimpleGraph
open scoped Topology

def TriangleFree {n k : ℕ}
    (C : SimpleGraph.TopEdgeLabeling (Fin n) (Fin k)) : Prop :=
  ∀ colour : Fin k, (C.labelGraph colour).CliqueFree 3

def ForcesMonochromaticTriangle (n k : ℕ) : Prop :=
  ∀ C : SimpleGraph.TopEdgeLabeling (Fin n) (Fin k), ¬ TriangleFree C

noncomputable def triangleRamseyNumber (k : ℕ) : ℕ :=
  sInf {n : ℕ | ForcesMonochromaticTriangle n k}

theorem erdos_183 :
    Filter.Tendsto
      (fun k : ℕ =>
        (triangleRamseyNumber k : ℝ) ^ ((1 : ℝ) / (k : ℝ)))
      atTop atTop := by
  sorry

theorem erdos_problem_183_explicit :
    (∀ k : ℕ, 2 ≤ k →
      (((1 : ℝ) / (6 * Real.exp 38)) *
        (k : ℝ) ^ ((1 : ℝ) / 3) / Real.log (k : ℝ)) ^ k ≤
          (triangleRamseyNumber k : ℝ)) ∧
      Filter.Tendsto
        (fun k : ℕ =>
          (triangleRamseyNumber k : ℝ) ^ ((1 : ℝ) / (k : ℝ)))
        atTop atTop := by
  sorry

theorem triangleRamseyNumber_log_sharp_coefficients :
    ∀ ε : ℝ, 0 < ε →
      ∀ᶠ k : ℕ in atTop,
        ((1 / 3 : ℝ) - ε) * (k : ℝ) * Real.log (k : ℝ) ≤
            Real.log (triangleRamseyNumber k : ℝ) ∧
          Real.log (triangleRamseyNumber k : ℝ) ≤
            (1 + ε) * (k : ℝ) * Real.log (k : ℝ) := by
  sorry

theorem triangleRamseyNumber_log_isTheta :
    (fun k : ℕ => Real.log (triangleRamseyNumber k : ℝ))
      =Θ[atTop] (fun k : ℕ => (k : ℝ) * Real.log (k : ℝ)) := by
  sorry

end ErdosProblems.MulticolourTriangleRamsey
J

One rule was supposed to do all the work

Pure math

If you ban a whole family of network patterns, people believed one single pattern in that family would explain almost all of the effect. That is false, and here is a specific example.

Where it shows up

Pure math. This area studies how dense a network can get before some shape is forced to appear.

So what

Takes away a shortcut researchers were hoping to use.

You must read this yourself2.6 KB
follows automatically once you accept it 705 KB · you audit 0.37%
Show the technical statement

Formal name: Quantitative counterexample to the Erdős–Simonovits compactness conjecture. Certifies 3 theorems in CompactnessAndDegeneracy.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • CompactnessConjecture.quantitativeCompactnessCounterexample
  • CompactnessConjecture.compactnessCounterexample_bigO
  • CompactnessConjecture.not_erdos_180

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

namespace CompactnessConjecture

noncomputable section

open Filter Finset SimpleGraph
open scoped Topology

structure FiniteGraph where
  order : ℕ
  graph : SimpleGraph (Fin order)

def FamilyFree (family : Finset FiniteGraph) {n : ℕ}
    (host : SimpleGraph (Fin n)) : Prop :=
  ∀ forbidden ∈ family, forbidden.graph.Free host

noncomputable def familyExtremal (family : Finset FiniteGraph)
    (n : ℕ) : ℕ := by
  classical
  exact (Finset.univ.filter (FamilyFree family)).sup
    (fun host : SimpleGraph (Fin n) => host.edgeFinset.card)

def IsCyclicFamily (family : Finset FiniteGraph) : Prop :=
  ∀ forbidden ∈ family, ¬ forbidden.graph.IsAcyclic

def IsCompactFamily (family : Finset FiniteGraph) : Prop :=
  ∃ forbidden ∈ family, ∃ C : ℝ, 0 < C ∧
    ∀ᶠ n : ℕ in atTop,
      (SimpleGraph.extremalNumber n forbidden.graph : ℝ) ≤
        C * (familyExtremal family n : ℝ)

def CompactnessConjectureStatement : Prop :=
  ∀ family : Finset FiniteGraph,
    family.Nonempty → IsCyclicFamily family → IsCompactFamily family

def extremalScale (n : ℕ) : ℝ :=
  (n : ℝ) ^ ((4 : ℝ) / 3)

def UniformMemberLower (family : Finset FiniteGraph) (c : ℝ) : Prop :=
  ∀ forbidden ∈ family,
    ∀ᶠ n : ℕ in atTop,
      c * extremalScale n ≤
        (SimpleGraph.extremalNumber n forbidden.graph : ℝ)

theorem not_erdos_180 :
    ¬ CompactnessConjectureStatement := by
  sorry

open scoped Classical

theorem quantitativeCompactnessCounterexample :
    ∃ (family : Finset FiniteGraph) (c C : ℝ),
      family.Nonempty ∧
      (∀ forbidden ∈ family,
        forbidden.graph.Connected ∧ forbidden.graph.IsBipartite ∧
          ¬ forbidden.graph.IsAcyclic) ∧
      0 < c ∧
      0 < C ∧
      UniformMemberLower family c ∧
      (∀ (n : ℕ) (host : SimpleGraph (Fin n)),
        FamilyFree family host →
          (host.edgeFinset.card : ℝ) ^ 16 ≤ C * (n : ℝ) ^ 21) ∧
      (∀ n : ℕ,
        (familyExtremal family n : ℝ) ^ 16 ≤ C * (n : ℝ) ^ 21) ∧
      (0 : ℝ) < 1 / 48 ∧
      (21 : ℝ) / 16 = (4 : ℝ) / 3 - 1 / 48 ∧
      ¬ IsCompactFamily family ∧
      ¬ CompactnessConjectureStatement := by
  sorry

theorem compactnessCounterexample_bigO :
    ∃ (family : Finset FiniteGraph) (c : ℝ),
      family.Nonempty ∧
      (∀ forbidden ∈ family,
        forbidden.graph.Connected ∧ forbidden.graph.IsBipartite ∧
          ¬ forbidden.graph.IsAcyclic) ∧
      0 < c ∧
      UniformMemberLower family c ∧
      Asymptotics.IsBigO Filter.atTop
        (fun n : ℕ => (familyExtremal family n : ℝ))
        (fun n : ℕ =>
          (n : ℝ) ^ ((4 : ℝ) / 3 - (1 : ℝ) / 48)) ∧
      ¬ IsCompactFamily family ∧
      ¬ CompactnessConjectureStatement := by
  sorry

end

end CompactnessConjecture
J

A 50-year-old formula was wrong

Pure math

Erdős guessed a clean formula for how many connections a network can have while avoiding a certain pattern. This shows the formula is wrong.

Where it shows up

Pure math, same area as the one above.

So what

The real answer is not the one everybody assumed.

You must read this yourself1.4 KB
follows automatically once you accept it 705 KB · you audit 0.20%
Show the technical statement

Formal name: Quantitative counterexample for two-degenerate bipartite graphs. Certifies 2 theorems in CompactnessAndDegeneracy.lean. Allowed axioms: propext Quot.sound Classical.choice. Independent kernel check: on.

  • TwoDegenerateGraphs.twoDegenerateExtremalCounterexample
  • TwoDegenerateGraphs.not_erdos_146

Why the excerpt below contains sorry: this is the statement-only audit layer used for human comparison, with proof bodies intentionally collapsed. The separate formal certificate contains the complete proof and is sorry-free.

import Mathlib

namespace TwoDegenerateGraphs

open Filter Finset SimpleGraph
open scoped Topology

noncomputable def neighborsWithin {V : Type*} (G : SimpleGraph V)
    (s : Finset V) (v : V) : Finset V := by
  classical
  exact s.filter (G.Adj v)

def IsDegenerate {V : Type*} (r : ℕ) (G : SimpleGraph V) : Prop :=
  ∀ s : Finset V, s.Nonempty →
    ∃ v ∈ s, (neighborsWithin G s v).card ≤ r

abbrev IsTwoDegenerate {V : Type*} (G : SimpleGraph V) : Prop :=
  IsDegenerate 2 G

def DegeneracyConjectureStatement : Prop :=
  ∀ (r q : ℕ) (H : SimpleGraph (Fin q)),
    0 < r → H.IsBipartite → IsDegenerate r H →
      Asymptotics.IsBigO Filter.atTop
        (fun n : ℕ => (SimpleGraph.extremalNumber n H : ℝ))
        (fun n : ℕ => (n : ℝ) ^ (((2 : ℕ) : ℝ) - 1 / (r : ℝ)))

open Classical in
theorem twoDegenerateExtremalCounterexample :
    ∃ (q : ℕ) (H : SimpleGraph (Fin q)),
      H.Connected ∧
      H.IsBipartite ∧
      IsTwoDegenerate H ∧
      (∀ coloring : H.Coloring (Fin 2), ∀ side : Fin 2,
        2 < (Finset.univ.filter
          (fun vertex : Fin q => coloring vertex = side)).sup
          (fun vertex => H.degree vertex)) ∧
      ∃ c ε : ℝ, 0 < c ∧ 0 < ε ∧
        ∀ᶠ n : ℕ in atTop,
          c * (n : ℝ) ^ ((3 : ℝ) / 2 + ε) ≤
            (SimpleGraph.extremalNumber n H : ℝ) := by
  sorry

theorem not_erdos_146 :
    ¬ DegeneracyConjectureStatement := by
  sorry

end TwoDegenerateGraphs

The claim to be careful with

NP-hardness is the family history of post-quantum encryption. It is not the load-bearing wall.

The two-minute version

You will see people say these results prove post-quantum encryption is safe. That is not what happened, and the difference matters.

Encryption does not use the hard version of these problems. It uses an easier version, so keys stay small and your phone stays fast. And here is the catch: that easier version is known to be not NP-hard. It cannot be, unless a lot of computer science is wrong.

So this proof is about a harder version that encryption does not use. It is the same family of problems. It is not the wall the encryption stands on.

NIST FIPS 203 rests ML-KEM on Module Learning With Errors. Micciancio and Regev: approximating lattice problems above √n / log n is not NP-hard unless the polynomial hierarchy collapses.

Go deeper

The full story, one click each

Why checking matters: mistakes in math can hide for decades

Here is the honest case for having a machine check math. It is not that people are careless. It is that this stuff is hard and the errors can hide for a very long time.

15 years

Vladimir Voevodsky won the Fields Medal, the top prize in math. One of his papers had a mistake in a key step. He believed it was fine until 2013. The paper was from 1989.

“Multiple groups of mathematicians studied my paper at seminars and used it in their work and none of them noticed the mistake.”
21 years

The classification of finite simple groups is a cornerstone result. It was announced as finished in 1983. A gap was found. Filling it took a 1,221-page paper published in 2004.

99%

For the Kepler conjecture, the reviewers worked harder than the editor had ever seen. They still could only say they were 99% sure. So the author spent years building a machine-checked version instead.

This is not only a math thing. When being wrong is expensive, industry already does it.

A helicopter under live attack

Researchers rebuilt a Boeing helicopter's software on a formally verified core called seL4. A red team was given root access to the camera system and told to bring it down. On the old version they could have crashed it or flown it anywhere. On the verified one they got in, and still could not touch safe flight.

Six years of fuzzing a compiler

Researchers threw random programs at every major C compiler for about six CPU-years. They found bugs that produce wrong code in all of them. In the verified compiler, CompCert, they found six bugs, and every one was in the unverified part. Zero in the verified core.

That is the real pitch. Verification does not make things correct. It turns “lots of smart people read it and nobody complained” into “a machine confirmed every step.” Given 15 years and 21 years and 99%, that is a real upgrade.

The ladder

Five questions. A computer can answer three.

"Verified" is not one thing. It is a stack of questions, and they get harder to automate as you go down. The first three are settled by software. The last two are yours, and always were.

  1. 1

    Does it build?computer

    Lean reads every line and accepts every step.

    Slow and expensive. Needs a 7.7 GB setup. We measured 97 seconds for the smallest file.

  2. 2

    Did anyone skip a step?computer

    No sorry notes anywhere. Nothing left as a to-do.

    Instant. Also the weakest of the three, and the one people quote.

  3. 3

    What is it standing on?computer

    Every result may lean on only three standard assumptions, and nothing else.

    The strongest automatic check, and almost nobody mentions it. 25 seconds per result.

  4. 4

    Does the statement say the right thing?you

    Somebody has to read the claim and decide it matches the famous problem.

    No tool does this. Lean's own comparator docs say a person has to check. Two real examples below.

  5. 5

    Do you trust the checker?you

    Lean is software. In July it had a bug that let a fake proof through.

    It fooled the backup checker too, by hitting a second bug. Fixed in an hour. These proofs are safe, and the reason is a person's judgment.

0.2%

Across all twelve results, that is the share of the material you have to read and judge yourself. The other 99.8% follows automatically once you accept it. 53 KB of claims. 25.6 MB of proof.

Beyond mathematics

This boundary appears anywhere AI acts in the real world.

Software can confirm that it followed a process. It cannot automatically guarantee that the process represented a person's actual intent, that the information underneath it was complete, or that the measured outcome was the outcome that mattered.

Verification does not eliminate human judgment. It concentrates that judgment at the points where meaning, risk, and accountability live.

Related essay: AI needs receipts, not just answers →
Sales

An agent can prove it created the CRM record. It cannot prove the right lead received the right treatment.

Operations

A workflow can prove every task closed. It cannot prove the customer experienced the intended result.

Home

A system can prove it followed the family rule. It cannot decide whether the rule still fits the situation.

Rung 4, for real

Two things no checker can tell you

Both come from the actual repository. Neither is a mistake. That is the point: the proofs are fine, and finding out they were fine still took a person.

Is that really what the word means?

One result proves a certain kind of group exists. To check it, the computer needs a definition of that word. So the file writes one, in about thirty lines, then states the claim. The computer confirms the proof matches that definition perfectly. It has no way to know whether the definition is the one experts actually use. If it is slightly off, the proof is still correct and the result no longer means what you thought.

class Sofic (G : Type*) [Group G] : Prop where
  approximation : ∀ (F : Finset G) (ε : ℝ), 0 < ε → ε < 1 →
    ∃ M : PermutationModel G, GoodOn M F ε

theorem exists_finitelyPresented_nonsofic_group :
    ∃ (G : Type) (_ : Group G),
      Group.IsFinitelyPresented G ∧ ¬ SoficGroups.Sofic G := by
  sorry

Everything after this file is machine-checkable. This file is not. It is about 1 KB. The proof that follows from it is 1,312 KB.

Is that a third, or is it zero?

We built one of the proofs and printed what it says. It contained k ^ (1 / 3). In this language, if those numbers are counting numbers, then 1 / 3 rounds down to 0, and anything to the power of zero is 1. That would quietly destroy the whole result. Nothing in the build log, the assumption list, or the no-steps-skipped check tells the two readings apart. We thought we had found a real problem.

Show what the computer sees
erdos_problem_183_explicit : (∀ (k : ℕ),
    2 ≤ k → (1 / (6 * Real.exp 38) * ↑k ^ (1 / 3) / Real.log ↑k) ^ k
      ≤ ↑(triangleRamseyNumber k)) ∧ ...

One switch, and the answer appears. Flip it.

Rung 5: the checker is software, and software has bugs

In July, Lean had a bug that let a fake proof through. None of this affects the ten results. Reaching the bug takes a specially crafted attack, and these are ordinary math files. But notice who decided that: a person did.

  • Jul 13Lean v4.32.0 comes out. This is the version the ten proofs are pinned to.
  • Jul 25Ramana Kumar posts what Lean's creator calls "a sorry-free 'disproof' of the Collatz conjecture, produced with AI assistance." It is not a real proof. It exploits a bug.
  • Jul 25It also fools the backup checker, by hitting a second, unrelated bug. Two programs, two different flaws, one crafted file.
  • Jul 28Reported as issue #14576. Fixed within the hour.
  • Jul 28Lean v4.32.2 ships the fix: "This point release fixes a soundness bug in the kernel."
  • Aug 1Lean's creator publishes the write-up. It notes that OpenAI's own security AI found more bugs in the checker, and floats a theory for the timing: strong models are now good enough to find them.
  • Aug 1The ten proofs are published, four days after the patched version came out.
Before you repeat any of this: what is still open
  • Not peer-reviewedNo journal has reviewed these. OpenAI labels the work agent-reviewed. The community site that tracks Erdős problems still lists 183, 180 and 146 as open.
  • Checked, not endorsedA passing check means the conclusion follows from the definitions written down. It does not mean those definitions match the famous problem everyone meant.
  • The checker is softwareLean had a real soundness bug in July. It was patched in an hour. These proofs are not affected, and the reason they are not affected is a person's judgment call.
What it takes to check this yourself

Measured on a 2-core machine, not guessed. The surprise is that the strongest automatic check is the cheap one, and it is the one nobody quotes.

StepCostWhat it settles
Download the exact toolchain2.8 GBNothing yet
Download the math library436 MB → 7.7 GBNothing yet
Build the smallest file97 secondsRung 1, for one result
Build all tenhoursRung 1, fully
Check the assumptions25 secondsRung 3, the strongest automatic check
Independent checker, in your browser801 KBA second opinion you run yourself
Read one claim file1 to 10 KBRung 4. Only you can do this one.
Brennan McCloud
Brennan McCloud

Founder of Aule Intelligence. I investigate the gap between what intelligent systems can execute, what they can verify, and what people can safely rely on.

More research →