A Lean 4 formalization of the Almgren–Pitts combinatorial argument — the quantitative covering-refinement argument underlying min-max constructions of minimal hypersurfaces.
Two main theorems.
Abstract core — CombArg.exists_sup_reduction_of_cover. Given a
compact nonempty topological space K, a continuous f : K → ℝ with
m₀ = sSup (range f), scalars 0 < ε ≤ δ, and a
FiniteCoverWithWitnesses of the δ-super-level set (a finite cover
with per-piece replacement energies, per-piece saving floor ε, and
two-fold overlap), produce f' : K → ℝ with
sSup (range f') ≤ m₀ − ε.
One-parameter application — CombArg.exists_sup_reduction.
Specializes the core to K = unitInterval with δ = 1/N and
ε = 1/(4N). Given a continuous f and a LocalWitness at every
1/N-near-critical parameter (saving 1/(4N) each), produce f' with
sSup (range f') ≤ m₀ − 1/(4N). The 1D cover-refinement that feeds the
core is done internally.
This is the combinatorial core of the argument appearing in Pitts (1981), Colding–De Lellis (2003), De Lellis–Tasnady (2013), De Lellis–Ramic (2017), and Marques–Neves (2014), extracted as a standalone machine-verified result with no geometric-measure-theoretic dependencies.
- Version: 0.1.0 (initial release)
- License: Apache 2.0
- Build:
lake build— 1536 jobs, all green - Verification: zero
sorry, depends only on the three standard Lean 4 / Mathlib foundational axioms (propext,Classical.choice,Quot.sound)
git clone <this repo>
cd comb-arg
lake exe cache get # download Mathlib pre-compiled oleans (first run)
lake build # main build — zero sorries
lake build test # smoke testAxiom audit:
echo 'import CombArg
#print axioms CombArg.exists_sup_reduction_of_cover
#print axioms CombArg.exists_sup_reduction' > /tmp/audit.lean
lake env lean /tmp/audit.lean
# Expected (both): depends on axioms: [propext, Classical.choice, Quot.sound]See examples/MinimalUsage.lean for a
worked invocation pattern.
-- Abstract core: generic compact K, parameters (δ, ε) with ε ≤ δ.
theorem exists_sup_reduction_of_cover
{K : Type*} [TopologicalSpace K] [CompactSpace K] [Nonempty K]
{f : K → ℝ} (hf : Continuous f)
{m₀ : ℝ} (hm : m₀ = sSup (Set.range f))
{δ ε : ℝ} (_hδ : 0 < δ) (_hε : 0 < ε) (hle : ε ≤ δ)
(C : FiniteCoverWithWitnesses K f m₀ δ ε) :
∃ f' : K → ℝ, sSup (Set.range f') ≤ m₀ - ε
-- One-parameter application: K = unitInterval, δ = 1/N, ε = 1/(4N).
theorem exists_sup_reduction
{X : Type*} [PseudoMetricSpace X] [PairableCover X]
{f : unitInterval → ℝ} (hf : Continuous f)
{m₀ : ℝ} (hm_pos : 0 < m₀) (hm : m₀ = sSup (Set.range f))
{N : ℕ} (hN : 0 < N)
(witness : ∀ t : unitInterval, f t ≥ m₀ - 1 / (N : ℝ) →
Nonempty (LocalWitness unitInterval X f t (1 / (4 * (N : ℝ))))) :
∃ f' : unitInterval → ℝ, sSup (Set.range f') ≤ m₀ - 1 / (4 * (N : ℝ))See docs/project-overview.md for a narrative
tour of the definitions and proof structure.
This library provides:
exists_sup_reduction_of_cover— abstract core (genericK)exists_sup_reduction— one-parameter application onunitIntervalFiniteCoverWithWitnesses— input structure to the coreLocalWitness— per-point reducer data for the applicationPairableCover— abstract class for paired-cover structuresInitialCover,PartialRefinement— intermediate 1D structuresexists_refinement— the 1D cover-refinement feeding the core
This library does NOT provide:
- Construction of
LocalWitnessinstances (caller's responsibility; in GMT contexts these come from replacement families) - Geometric-measure-theoretic machinery (varifolds, integral currents, Caccioppoli sets, etc.)
- The full min-max existence theorem (only its combinatorial core)
- Stock instances of
PairableCoverbeyond a trivial smoke-test instance onℝ - Multi-parameter application
K = unitInterval^m(the core accepts any compactK, but only the 1D cover construction is shipped)
The following names are considered stable public API and will not change without a major version bump:
CombArg.exists_sup_reduction_of_cover— abstract core theoremCombArg.exists_sup_reduction— one-parameter applicationCombArg.FiniteCoverWithWitnesses(structure + fields)CombArg.LocalWitness(structure + fields)CombArg.PairableCover(class + fields)CombArg.Refinement.InitialCover(structure + fields)CombArg.Refinement.PartialRefinement(structure + fields)CombArg.Refinement.nearCriticalCombArg.Refinement.exists_refinement
Internal definitions (step_succ, step_succ_at, terminal_twoFold,
chain-spacing lemmas, etc.) may change in minor releases.
comb-arg/
├── README.md
├── LICENSE Apache 2.0
├── CITATION.cff
├── CHANGELOG.md
├── lakefile.lean, lake-manifest.json, lean-toolchain
├── CombArg.lean top-level module (re-exports)
├── CombArg/
│ ├── Util.lean reusable utilities
│ │ (ge_of_closure_of_ge, exists_even_gap_of_three)
│ ├── Witness.lean PairableCover class, LocalWitness structure
│ ├── Core.lean FiniteCoverWithWitnesses +
│ │ exists_sup_reduction_of_cover (abstract core)
│ ├── EnergyBound.lean re-export stub (subsumed by Core as of v0.2)
│ ├── SupReduction.lean exists_sup_reduction (one-parameter application)
│ ├── Refinement.lean facade re-exporting the 7 submodules
│ └── Refinement/
│ ├── SpacedIntervals.lean abstract skip-2 spaced intervals
│ │ (SkippedSpacedIntervals + geometry lemmas)
│ ├── InitialCover.lean nearCritical + InitialCover
│ ├── CoverConstruction.lean exists_initialCover (Lebesgue)
│ ├── PartialRefinement.lean mid-induction state + step_zero
│ ├── Induction.lean step_succ + exists_terminal_refinement
│ ├── Disjointness.lean spacing + parity-rescue lemmas
│ │ (thin wrappers over SpacedIntervals)
│ └── Assembly.lean terminal_twoFold, saving_bound_closure,
│ exists_refinement
├── docs/
│ ├── project-overview.md narrative status + reading guide
│ └── design-notes.md design decisions (§§1–12)
├── examples/
│ └── MinimalUsage.lean worked invocation pattern
└── test/
└── Smoke.lean PairableCover smoke test
Reading order:
docs/project-overview.md— current status and definition tour.CombArg/Witness.lean—PairableCover,LocalWitness.CombArg/Core.lean—FiniteCoverWithWitnessesstructure + the abstract core theorem and its arithmetic bookkeeping.CombArg/Refinement.lean— 1D cover-construction facade + six submodules underRefinement/.CombArg/SupReduction.lean— the top-level chain for the one-parameter application.docs/design-notes.md— rationale for each structural choice.
- Lean 4 (
leanprover/lean4:v4.30.0-rc2, pinned inlean-toolchain) - Mathlib (pinned via
lake-manifest.json) - No other dependencies
See CITATION.cff. If you use this library in academic
work, please cite using the metadata there.
See CHANGELOG.md.
Apache 2.0 — see LICENSE.