OSSS inequality for decision trees
DefinitionProbability of a configuration under a product weight#✓fully proved
The probability ∏ₑ ν e (ω e) of the configuration ω under the product weight ν.
noncomputable def weight (ν : E → Bool → ℝ) (ω : ConfigSpace E) : ℝ := ∏ e, ν e (ω e)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 1 · Used by 49
DefinitionExpectation under a product weight#✓fully proved
The expectation ∑_ω weight ν ω * g ω of g under the product weight ν.
noncomputable def expect (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ :=
∑ ω, weight ν ω * g ω
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def weight (ν : E → Bool → ℝ) (ω : ConfigSpace E) : ℝ := ∏ e, ν e (ω e)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:68
Uses 2 · Used by 54
StructureProduct probability weight#✓fully proved
ν is a product probability weight: each ν e is a probability vector on Bool.
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
Used by 35
DefinitionPoint-mass weight on the Booleans#✓fully proved
The point mass at b, as a weight on Bool. Replacing ν e by pt b conditions on ω e = b.
DefinitionCovariance under a product weight#✓fully proved
The covariance 𝔼[f g] - 𝔼[f] 𝔼[g] under the product weight ν.
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def expect (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ :=
∑ ω, weight ν ω * g ω
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:71
Uses 2 · Used by 12
DefinitionVariance under a product weight#✓fully proved
The variance of g under the product weight ν.
noncomputable def var (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ := cov ν g g
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
Uses 2 · Used by 21
DefinitionInfluence of a coordinate#✓fully proved
The influence of coordinate e on g: 𝔼 |g(ω^{e ↦ 1}) - g(ω^{e ↦ 0})|. For the indicator of
an event this is the probability that e is pivotal (infl_indicator_eq_pivotal).
See also BooleanCube.boolInfluence, the uniform-measure influence 𝔼 ((f x - f x^{⊕i}) / 2)²;
for 0/1-valued functions on the uniform cube the two differ by the factor 4.
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def expect (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ :=
∑ ω, weight ν ω * g ω
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:71
def setOpen (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e true
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:42
def setClosed (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e false
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:45
Uses 4 · Used by 49
DefinitionConditional expectation given the other coordinates#✓fully proved
The conditional expectation of g given all coordinates except e.
noncomputable def condMean (ν : E → Bool → ℝ) (e : E) (g : ConfigSpace E → ℝ) :
ConfigSpace E → ℝ :=
fun ω => ν e true * g (setOpen e ω) + ν e false * g (setClosed e ω)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def setOpen (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e true
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:42
def setClosed (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e false
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:45
Uses 3 · Used by 4
InductiveBinary decision tree#✓fully proved
A binary decision tree on the variables E: a leaf outputs a Boolean value, and a node queries
a variable and continues in the first subtree if it is true and in the second otherwise.
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
Used by 13
DefinitionBoolean function computed by a decision tree#✓fully proved
The Boolean function computed by the decision tree.
def eval : DecisionTree E → ConfigSpace E → Bool
| leaf b, _ => b
| node e t f, ω => if ω e then eval t ω else eval f ω
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 2 · Used by 5
DefinitionVariables queried by a decision tree on an input#✓fully proved
The set of variables the decision tree queries on input ω.
def queried : DecisionTree E → ConfigSpace E → Finset E
| leaf _, _ => ∅
| node e t f, ω => insert e (if ω e then queried t ω else queried f ω)
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 2 · Used by 4
DefinitionReal-valued function computed by a decision tree#✓fully proved
The function computed by the decision tree, as a 0/1-valued real function.
noncomputable def evalR (T : DecisionTree E) (ω : ConfigSpace E) : ℝ :=
if T.eval ω then 1 else 0
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 3 · Used by 7
DefinitionRevealment of a variable by a decision tree#✓fully proved
The revealment δₑ(T): the probability that the decision tree T queries the variable e.
noncomputable def reveal (ν : E → Bool → ℝ) (T : DecisionTree E) (e : E) : ℝ :=
expect ν (fun ω => if e ∈ T.queried ω then (1 : ℝ) else 0)
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
noncomputable def expect (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ :=
∑ ω, weight ν ω * g ω
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:71
Uses 4 · Used by 6
DefinitionConfiguration with one coordinate flipped#✓fully proved
The configuration ω with coordinate e flipped.
See also BooleanCube.flipCoord, the same operation on Fin n → Bool.
def flipAt (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e (!(ω e))
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 1 · Used by 3
LemmaRoot step of the OSSS induction#✓fully proved
Root step of the OSSS induction: the covariance of a function whose discrete derivative in e
is bounded by 1 with the martingale increment g - 𝔼[g | ω_{≠e}] is at most Infₑ(g).
lemma claimA {ν : E → Bool → ℝ} (hν : IsProbWeight ν) (e : E) (F g : ConfigSpace E → ℝ)
(hF : ∀ ω, |F (setOpen e ω) - F (setClosed e ω)| ≤ 1) :
cov ν F (fun ω => g ω - condMean ν e g ω) ≤ infl ν g e
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def setOpen (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e true
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:42
def setClosed (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e false
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:45
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
noncomputable def condMean (ν : E → Bool → ℝ) (e : E) (g : ConfigSpace E → ℝ) :
ConfigSpace E → ℝ :=
fun ω => ν e true * g (setOpen e ω) + ν e false * g (setClosed e ω)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:172
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
Uses 11 · Used by 1
LemmaSubtree step of the OSSS induction#✓fully proved
Subtree step of the OSSS induction: for G independent of the root variable e, the covariance
with a tree rooted at e splits into the covariances with the two subtrees under the
conditioned weights.
lemma claimB {ν : E → Bool → ℝ} (hν : IsProbWeight ν) (e : E) (t f : DecisionTree E)
(G : ConfigSpace E → ℝ)
(hG : ∀ ω, G (flipAt e ω) = G ω) :
cov ν (DecisionTree.node e t f).evalR G
= ν e true * cov (Function.update ν e (pt true)) t.evalR G
+ ν e false * cov (Function.update ν e (pt false)) f.evalR G
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def flipAt (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e (!(ω e))
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:320
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
def pt (b : Bool) : Bool → ℝ := fun c => if c = b then 1 else 0
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:81
Uses 10 · Used by 1
TheoremOSSS covariance inequality over all product weights#✓fully proved
The OSSS covariance inequality, stated for all product weights at once so that it can be proved
by induction on the decision tree. Use osss for the usual argument order.
theorem osss_cov (T : DecisionTree E) :
∀ ν, IsProbWeight ν → ∀ g : ConfigSpace E → ℝ,
cov ν T.evalR g ≤ ∑ i, reveal ν T i * infl ν g i
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
noncomputable def reveal (ν : E → Bool → ℝ) (T : DecisionTree E) (e : E) : ℝ :=
expect ν (fun ω => if e ∈ T.queried ω then (1 : ℝ) else 0)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:237
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
Uses 18 · Used by 3
TheoremOSSS inequality#✓fully proved
OSSS inequality (O'Donnell, Saks, Schramm, Servedio, Every decision tree has an influential
variable, FOCS 2005): if the decision tree T computes f, then Var(f) ≤ ∑ᵢ δᵢ(T) Infᵢ(f)
under every product probability measure.
theorem osss_var {ν : E → Bool → ℝ} (hν : IsProbWeight ν) (T : DecisionTree E) :
var ν T.evalR ≤ ∑ i, reveal ν T i * infl ν T.evalR i
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
noncomputable def var (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ := cov ν g g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:161
noncomputable def reveal (ν : E → Bool → ℝ) (T : DecisionTree E) (e : E) : ℝ :=
expect ν (fun ω => if e ∈ T.queried ω then (1 : ℝ) else 0)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:237
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
TheoremOSSS inequality#✓fully proved
OSSS inequality, covariance form (O'Donnell, Saks, Schramm, Servedio, Every decision tree
has an influential variable, FOCS 2005; in this form Duminil-Copin, Raoufi, Tassion, Ann. of
Math. 2019): if the decision tree T computes the Boolean function f, then for every real
function g and every product probability measure, Cov(f, g) ≤ ∑ᵢ δᵢ(T) Infᵢ(g), where
Infᵢ(g) = 𝔼 |g(ω^{i ↦ 1}) - g(ω^{i ↦ 0})|.
This is osss_cov with the weight and its hypothesis as leading arguments.
theorem osss {ν : E → Bool → ℝ} (hν : IsProbWeight ν) (T : DecisionTree E) (g : ConfigSpace E → ℝ) :
cov ν T.evalR g ≤ ∑ i, reveal ν T i * infl ν g i
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
noncomputable def reveal (ν : E → Bool → ℝ) (T : DecisionTree E) (e : E) : ℝ :=
expect ν (fun ω => if e ∈ T.queried ω then (1 : ℝ) else 0)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:237
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
DefinitionBernoulli product weight#✓fully proved
The Bernoulli(p) product weight: every coordinate is true with probability p.
noncomputable def bernoulliWeight (p : ℝ) : E → Bool → ℝ :=
fun _ b => if b then p else 1 - p
Used by 95
TheoremOSSS inequality for the Bernoulli product measure#✓fully proved
The OSSS inequality for the Bernoulli(p) product measure.
theorem osss_bernoulli {p : ℝ} (hp0 : 0 ≤ p) (hp1 : p ≤ 1)
(T : DecisionTree E) (g : ConfigSpace E → ℝ) :
cov (bernoulliWeight p) T.evalR g
≤ ∑ i, reveal (bernoulliWeight p) T i * infl (bernoulliWeight p) g i
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
noncomputable def bernoulliWeight (p : ℝ) : E → Bool → ℝ :=
fun _ b => if b then p else 1 - p
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:915
noncomputable def reveal (ν : E → Bool → ℝ) (T : DecisionTree E) (e : E) : ℝ :=
expect ν (fun ω => if e ∈ T.queried ω then (1 : ℝ) else 0)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:237
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
TheoremInfluence on an indicator is the pivotal probability#✓fully proved
The influence of e on the indicator of A is the probability that e is pivotal for A.
theorem infl_indicator_eq_pivotal (ν : E → Bool → ℝ) (A : Set (ConfigSpace E)) (e : E) :
infl ν (A.indicator (fun _ => (1 : ℝ))) e
= expect ν ({ω | IsPivotal e A ω}.indicator (fun _ => (1 : ℝ)))
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
noncomputable def expect (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ :=
∑ ω, weight ν ω * g ω
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:71
def IsPivotal (e : E) (A : Set (ConfigSpace E)) (ω : ConfigSpace E) : Prop :=
(setOpen e ω ∈ A) ≠ (setClosed e ω ∈ A)
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:100
Uses 7 · Used by 1
TheoremBernoulli product weight computes product-measure integrals#✓fully proved
The Bernoulli(p) product weight computes integrals against
StatMech.bernoulliProductMeasure, the corresponding product probability measure.
theorem expect_bernoulliWeight_eq_integral (p : NNReal) (hp : p ≤ 1) (g : ConfigSpace E → ℝ) :
expect (bernoulliWeight (p : ℝ)) g = ∫ ω, g ω ∂(bernoulliProductMeasure p hp)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def expect (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ :=
∑ ω, weight ν ω * g ω
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:71
noncomputable def bernoulliWeight (p : ℝ) : E → Bool → ℝ :=
fun _ b => if b then p else 1 - p
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:915
noncomputable def bernoulliProductMeasure (p : ℝ≥0) (hp : p ≤ 1) :
Measure (ConfigSpace E) :=
Measure.infinitePi (fun _ : E => bernoulliMeasure p hp)
MathlibExt/Probability/Configuration/ProductMeasure.lean:85
DefinitionDecision tree querying a list of variables#✓fully proved
The decision tree that queries the variables of l in order and then outputs the value of φ
at the configuration that agrees with the answers on l and is false elsewhere. It computes
φ when φ depends only on the variables in l (eval_fullTree).
def fullTree (φ : ConfigSpace E → Bool) : List E → DecisionTree E
| [] => .leaf (φ (fun _ => false))
| (e :: l) =>
.node e (fullTree (fun ω => φ (setOpen e ω)) l)
(fullTree (fun ω => φ (setClosed e ω)) l)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
def setOpen (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e true
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:42
def setClosed (e : E) (ω : ConfigSpace E) : ConfigSpace E := Function.update ω e false
MathlibExt/Probability/CorrelationInequalities/Pivotal.lean:45
Uses 4 · Used by 3
DefinitionFunction depending only on listed coordinates#✓fully proved
φ depends only on the coordinates in the list l.
def InsensOutside (φ : ConfigSpace E → Bool) (l : List E) : Prop :=
∀ ω ω', (∀ e ∈ l, ω e = ω' e) → φ ω = φ ω'
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 1 · Used by 2
DefinitionDecision tree querying every variable#✓fully proved
The decision tree that queries every variable and then outputs the value of φ; it computes φ
and has revealment 1 at every variable.
noncomputable def fullTreeUniv (φ : ConfigSpace E → Bool) : DecisionTree E :=
fullTree φ (Finset.univ.toList)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
inductive DecisionTree (E : Type*) where
| leaf : Bool → DecisionTree E
| node : E → DecisionTree E → DecisionTree E → DecisionTree E
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:197
def fullTree (φ : ConfigSpace E → Bool) : List E → DecisionTree E
| [] => .leaf (φ (fun _ => false))
| (e :: l) =>
.node e (fullTree (fun ω => φ (setOpen e ω)) l)
(fullTree (fun ω => φ (setClosed e ω)) l)
CSLibExt/Complexity/BooleanFunctions/Poincare.lean:54
TheoremPoincaré inequality for Boolean functions under a product measure#✓fully proved
Poincaré inequality for Boolean functions under a product measure: Var(1_A) ≤ ∑ₑ Infₑ(1_A),
where Infₑ(1_A) is the probability that e is pivotal. This is the OSSS inequality for the
full decision tree; it is weaker than the Efron–Stein inequality Var(f) ≤ ∑ₑ pₑ(1 - pₑ) 𝔼[(∂ₑ
f)²] by the factor pₑ(1 - pₑ) ≤ 1/4.
theorem poincare {ν : E → Bool → ℝ} (hν : IsProbWeight ν) (φ : ConfigSpace E → Bool) :
var ν (fun ω => if φ ω then (1 : ℝ) else 0)
≤ ∑ e, infl ν (fun ω => if φ ω then (1 : ℝ) else 0) e
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def var (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ := cov ν g g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:161
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
Uses 17 · Used by 1
TheoremCovariance form of the Poincaré inequality#✓fully proved
Covariance form of poincare: Cov(1_A, g) ≤ ∑ₑ Infₑ(g) for every real function g.
theorem poincare_cov {ν : E → Bool → ℝ} (hν : IsProbWeight ν) (φ : ConfigSpace E → Bool)
(g : ConfigSpace E → ℝ) :
cov ν (fun ω => if φ ω then (1 : ℝ) else 0) g ≤ ∑ e, infl ν g e
structure IsProbWeight (ν : E → Bool → ℝ) : Prop where
nonneg : ∀ e b, 0 ≤ ν e b
normalized : ∀ e, ν e false + ν e true = 1
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:75
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def cov (ν : E → Bool → ℝ) (f g : ConfigSpace E → ℝ) : ℝ :=
expect ν (fun ω => f ω * g ω) - expect ν f * expect ν g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:157
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
Uses 17
TheoremPoincaré inequality for the Bernoulli product measure#✓fully proved
poincare for the Bernoulli(p) product measure.
theorem poincare_bernoulli {p : ℝ} (hp0 : 0 ≤ p) (hp1 : p ≤ 1) (φ : ConfigSpace E → Bool) :
var (bernoulliWeight p) (fun ω => if φ ω then (1 : ℝ) else 0)
≤ ∑ e, infl (bernoulliWeight p) (fun ω => if φ ω then (1 : ℝ) else 0) e
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def var (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) : ℝ := cov ν g g
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:161
noncomputable def bernoulliWeight (p : ℝ) : E → Bool → ℝ :=
fun _ b => if b then p else 1 - p
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:915
noncomputable def infl (ν : E → Bool → ℝ) (g : ConfigSpace E → ℝ) (e : E) : ℝ :=
expect ν (fun ω => |g (setOpen e ω) - g (setClosed e ω)|)
CSLibExt/Complexity/BooleanFunctions/OSSS.lean:168
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.