FormalConjectures/Paper/StrongSensitivityConjecture.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1
10 declarations, 3 contain sorry, 0 declared as axioms
Strong Sensitivity Conjecture (bs(f) ≤ s(f)^2)
This file formalizes the strong sensitivity conjecture, asserting:
For every Boolean function f : {0,1}^n → {0,1},
bs(f) ≤ s(f)^2,
where bs(f) denotes block sensitivity and s(f) denotes sensitivity.
Huang's theorem proves a quartic upper bound, bs(f) ≤ s(f)^4, thereby
resolving the most widely known form of the sensitivity conjecture.
We now ask whether a stronger upper bound holds. Interestingly, the original
paper of Nisan and Szegedy, where the sensitivity conjecture first appeared,
already speculated that a quadratic upper bound might be the correct
relation. On the lower bound side, Rubinstein
(https://link.springer.com/article/10.1007/BF01200762) constructed Boolean functions
exhibiting the first quadratic separation. The best currently
known gap, due to Ambainis and Sun (https://arxiv.org/abs/1108.3494), is
bs(f) ≥ (2/3)⋅s(f)^2.
References:
- Induced Subgraphs of Hypercubes and a Proof of the Sensitivity Conjecture by Hao Huang (see Section 3, Concluding Remarks)
- Variations on the Sensitivity Conjecture by Pooya Hatami, Raghav Kulkarni, and Denis Pankratov (see Question 3.1)
- On the Degree of Boolean Functions as Real Polynomials by Noam Nisan, and Mario Szegedy (see Section 4, Open Problems)
Imports (1)
- def
StrongSensitivityConjecture.flipFlip operator,flip x Breturns inputxwith bits in blockBinverted line 62 sourceSource documentation
Flip operator,
flip x Breturns inputxwith bits in blockBinverted.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,Bool,FinsetProof uses:
ite,Membership.mem,Bool.not4 instances, coercions and auxiliary constants left out.
def flip (x : Fin n → Bool) (B : Finset (Fin n)) : Fin n → Bool := …
- def
StrongSensitivityConjecture.sensitivityAtLocal sensitivity s(f,x), number of indices where flipping one bit changes the value offline 67 sourceSource documentation
Local sensitivity s(f,x), number of indices where flipping one bit changes the value of
f.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,BoolProof uses:
Finset.card,Finset.filter,Ne, StrongSensitivityConjecture.flip,Singleton.singleton,Finset,Eq,Finset.univ4 instances, coercions and auxiliary constants left out.
def sensitivityAt (f : (Fin n → Bool) → Bool) (x : Fin n → Bool) : ℕ := …
- def
StrongSensitivityConjecture.sensitivityGlobal sensitivity s(f), maximum sensitivity offover all inputs line 72 sourceSource documentation
Global sensitivity s(f), maximum sensitivity of
fover all inputs.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,BoolProof uses:
Finset.sup,Finset.univ, StrongSensitivityConjecture.sensitivityAt7 instances, coercions and auxiliary constants left out.
def sensitivity (f : (Fin n → Bool) → Bool) : ℕ := …
- def
StrongSensitivityConjecture.IsValidBlockConfigCheck validity of block collection (disjoint and sensitive), A collection of blockscBis valid forfatxif the blocks are disjoint and flipping any block changesf(x)line 78 sourceSource documentation
Check validity of block collection (disjoint and sensitive), A collection of blocks
cBis valid forfatxif the blocks are disjoint and flipping any block changesf(x).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,Bool,FinsetProof uses:
And,Set.PairwiseDisjoint,id,Membership.mem,Ne, StrongSensitivityConjecture.flip5 instances, coercions and auxiliary constants left out.
def IsValidBlockConfig (f : (Fin n → Bool) → Bool) (x : Fin n → Bool) (cB : Finset (Finset (Fin n))) : Prop := … - def
StrongSensitivityConjecture.blockSensitivityAtLocal block sensitivity bs(f,x), maximum size of a collection of sensitive, disjoint blocks forfatxline 85 sourceSource documentation
Local block sensitivity bs(f,x), maximum size of a collection of sensitive, disjoint blocks for
fatx.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,BoolProof uses:
Finset.sup,Finset,Finset.filter, StrongSensitivityConjecture.IsValidBlockConfig,Classical.propDecidable,Finset.univ,Finset.card5 instances, coercions and auxiliary constants left out.
noncomputable def blockSensitivityAt (f : (Fin n → Bool) → Bool) (x : Fin n → Bool) : ℕ := …
- def
StrongSensitivityConjecture.blockSensitivityGlobal block sensitivity off, maximum block sensitivity offover all inputs line 91 sourceSource documentation
Global block sensitivity of
f, maximum block sensitivity offover all inputs.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,BoolProof uses:
Finset.sup,Finset.univ, StrongSensitivityConjecture.blockSensitivityAt7 instances, coercions and auxiliary constants left out.
noncomputable def blockSensitivity (f : (Fin n → Bool) → Bool) : ℕ := …
- theorem
StrongSensitivityConjecture.strong_sensitivity_conjectureStrong Sensitivity Conjecture, for every Boolean functionf : {0,1}^n → {0,1},bs(f) ≤ s(f)^2sorry line 103 sourceSource documentation
Strong Sensitivity Conjecture, for every Boolean function
f : {0,1}^n → {0,1},bs(f) ≤ s(f)^2.We call this the strong sensitivity conjecture because the original sensitivity conjecture only asked for a polynomial bound in terms of
s(f). Huang's celebrated result (often called the sensitivity theorem) gives a quartic bound,bs(f) ≤ s(f)^4, thereby settling the original conjecture.depends on sorry what this means
Statement uses:
Nat,Fin,Bool,LE.le, StrongSensitivityConjecture.blockSensitivity,HPow.hPow, StrongSensitivityConjecture.sensitivity,OfNat.ofNatProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous12 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem strong_sensitivity_conjecture {n : ℕ} (f : (Fin n → Bool) → Bool) : blockSensitivity f ≤ sensitivity f ^ 2 := by …Mentions: StrongSensitivityConjecture.blockSensitivity, StrongSensitivityConjecture.sensitivity
- def
StrongSensitivityConjecture.nisanExampleSimple test example line 118 sourceSource documentation
Simple test example. For multiples of four with $n \ge 12$, this Boolean function has block sensitivity strictly greater than its sensitivity. Source: Nisan1989.
nisanExample(x) = 1iff the Hamming weight of $x$ is either $n/2$ or $n/2 + 1$. The function is symmetric, so its value only depends on the Hamming weight of the input.L4DEL explanation
Simple test example. For multiples of four with $n \ge 12$, this Boolean function has block sensitivity strictly greater than its sensitivity. Source: Nisan1989.
nisanExample(x) = 1iff the Hamming weight of $x$ is either $n/2$ or $n/2 + 1$. The function is symmetric, so its value only depends on the Hamming weight of the input.Sources and attribution: Pinned Lean source (1646ca16afd6)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Fin,BoolProof uses:
Finset.card,Finset.filter,Eq,Bool.true,Finset.univ,Decidable.decide,Membership.mem,Rat,Finset,Insert.insert,HDiv.hDiv,OfNat.ofNat,Singleton.singleton,HAdd.hAdd15 instances, coercions and auxiliary constants left out.
def nisanExample (n : ℕ) (x : Fin n → Bool) : Bool := …
- lemma
StrongSensitivityConjecture.nisanExample_sensitivityAssumingnis a positive multiple of 4, the sensitivity ofnisanExampleis $n/2 + 2$ sorry line 126 sourceSource documentation
Assuming
nis a positive multiple of 4, the sensitivity ofnisanExampleis $n/2 + 2$. It is achieved by any $x$ with Hamming weight $n/2 + 2$: flipping any of its $n/2 + 2$ one-bits moves the input into the accepting layer of weight $n/2 + 1$.depends on sorry what this means
Statement uses:
Nat,Dvd.dvd,OfNat.ofNat,LT.lt,Eq, StrongSensitivityConjecture.sensitivity, StrongSensitivityConjecture.nisanExample,HAdd.hAdd,HDiv.hDivProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous14 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma nisanExample_sensitivity (n : ℕ) (hn : 4 ∣ n) (hn_pos : 0 < n) : sensitivity (nisanExample n) = n / 2 + 2 := by …Mentions: StrongSensitivityConjecture.sensitivity, StrongSensitivityConjecture.nisanExample
- lemma
StrongSensitivityConjecture.nisanExample_blockSensitivityAssumingnis a multiple of 4 and $n \ge 8$, the block sensitivity ofnisanExampleis $3n/4$, achieved by any $x$ with Hamming weight $n/2$ sorry line 135 sourceSource documentation
Assuming
nis a multiple of 4 and $n \ge 8$, the block sensitivity ofnisanExampleis $3n/4$, achieved by any $x$ with Hamming weight $n/2$. An optimal block configuration uses all $n/2$ one-bits as singleton blocks and forms $n/4$ disjoint size-2 blocks from the zero-bits.depends on sorry what this means
Statement uses:
Nat,Dvd.dvd,OfNat.ofNat,LE.le,Eq, StrongSensitivityConjecture.blockSensitivity, StrongSensitivityConjecture.nisanExample,HDiv.hDiv,HMul.hMulProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous14 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma nisanExample_blockSensitivity (n : ℕ) (hn : 4 ∣ n) (hn_large : 8 ≤ n) : blockSensitivity (nisanExample n) = 3 * n / 4 := by …Mentions: StrongSensitivityConjecture.blockSensitivity, StrongSensitivityConjecture.nisanExample