Down-compression and disjoint pairs
DefinitionSupport of a configuration as a finset#✓fully proved
The support {i | ω i = true} of a configuration, as a finset.
def cfgSupport [Fintype E] [DecidableEq E] (ω : ConfigSpace E) : Finset E :=
Finset.univ.filter (fun i => ω i = true)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
Uses 1 · Used by 6
DefinitionConfiguration with a given support#✓fully proved
The configuration whose open coordinates are exactly the elements of s.
def supportCfg [DecidableEq E] (s : Finset E) : ConfigSpace E := fun i => decide (i ∈ s)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
DefinitionConfigurations on a finite set as finsets#✓fully proved
Configurations on a finite set are the same as finsets (their supports).
def cfgEquivFinset [Fintype E] [DecidableEq E] : ConfigSpace E ≃ Finset E where
toFun := cfgSupport
invFun := supportCfg
left_inv := supportCfg_cfgSupport
right_inv := cfgSupport_supportCfg
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def cfgSupport [Fintype E] [DecidableEq E] (ω : ConfigSpace E) : Finset E :=
Finset.univ.filter (fun i => ω i = true)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:54
def supportCfg [DecidableEq E] (s : Finset E) : ConfigSpace E := fun i => decide (i ∈ s)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:58
lemma supportCfg_cfgSupport [Fintype E] [DecidableEq E] (ω : ConfigSpace E) :
supportCfg (cfgSupport ω) = ω
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:67
lemma cfgSupport_supportCfg [Fintype E] [DecidableEq E] (s : Finset E) :
cfgSupport (supportCfg s) = s
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:73
Uses 3 · Used by 1
DefinitionDown-compression of a family of configurations#✓fully proved
Down-compression at i of a family of configurations, through cfgEquivFinset.
noncomputable def downCompress [Fintype E] [DecidableEq E] (i : E)
(𝒜 : Finset (ConfigSpace E)) : Finset (ConfigSpace E) :=
(Down.compression i (𝒜.image cfgSupport)).image supportCfg
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def cfgSupport [Fintype E] [DecidableEq E] (ω : ConfigSpace E) : Finset E :=
Finset.univ.filter (fun i => ω i = true)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:54
def supportCfg [DecidableEq E] (s : Finset E) : ConfigSpace E := fun i => decide (i ∈ s)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:58
TheoremReimer's inequality on one coordinate#✓fully proved
Reimer's inequality on one coordinate, for all events.
theorem reimer_wprob_one (φ : Fin 1 → Bool → ℝ)
(hφ0 : ∀ i b, 0 ≤ φ i b) (hφ1 : ∀ i, φ i false + φ i true = 1)
(A B : Set (ConfigSpace (Fin 1))) :
wprob φ (disjointOccurrence A B) ≤ wprob φ A * wprob φ B
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
noncomputable def wprob [Fintype E] [DecidableEq E] (φ : E → Bool → ℝ)
(S : Set (ConfigSpace E)) : ℝ :=
∑ ω, S.indicator (fun _ => (1 : ℝ)) ω * pweight φ ω
MathlibExt/Probability/CorrelationInequalities/BK.lean:101
def disjointOccurrence (A B : Set (ConfigSpace E)) : Set (ConfigSpace E) :=
{ω | ∃ K L : Set E, Disjoint K L ∧ OccursOn A K ω ∧ OccursOn B L ω}
MathlibExt/Probability/CorrelationInequalities/DisjointOccurrence.lean:92
DefinitionEvent depending only on a set of coordinates#✓fully proved
DependsOn A S: whether a configuration lies in A depends only on its values on S.
This is Mathlib's DependsOn for the membership predicate of A.
def DependsOn (A : Set (ConfigSpace E)) (S : Set E) : Prop :=
∀ ω ω', agreeOn S ω ω' → (ω ∈ A ↔ ω' ∈ A)
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def agreeOn (K : Set E) (ω ω' : ConfigSpace E) : Prop := ∀ e ∈ K, ω' e = ω e
MathlibExt/Probability/CorrelationInequalities/DisjointOccurrence.lean:48
Uses 2 · Used by 21
TheoremDisjoint occurrence equals intersection for disjoint dependence sets#✓fully proved
If A depends only on S, B only on T, and S, T are disjoint, then
A □ B = A ∩ B.
theorem disjointOccurrence_eq_inter_of_dependsOn {A B : Set (ConfigSpace E)} {S T : Set E}
(hA : DependsOn A S) (hB : DependsOn B T) (hST : Disjoint S T) :
disjointOccurrence A B = A ∩ B
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def DependsOn (A : Set (ConfigSpace E)) (S : Set E) : Prop :=
∀ ω ω', agreeOn S ω ω' → (ω ∈ A ↔ ω' ∈ A)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:214
def disjointOccurrence (A B : Set (ConfigSpace E)) : Set (ConfigSpace E) :=
{ω | ∃ K L : Set E, Disjoint K L ∧ OccursOn A K ω ∧ OccursOn B L ω}
MathlibExt/Probability/CorrelationInequalities/DisjointOccurrence.lean:92
Uses 7 · Used by 1
TheoremIndependence of events on complementary coordinate sets#✓fully proved
Events depending on complementary coordinate sets are independent under a product probability weight.
theorem wprob_inter_mul_of_split [Fintype E] [DecidableEq E] (P : E → Prop)
(φ : E → Bool → ℝ) (hφ1 : ∀ x, φ x false + φ x true = 1)
{A B : Set (ConfigSpace E)} (hA : DependsOn A {x | P x}) (hB : DependsOn B {x | ¬ P x}) :
wprob φ (A ∩ B) = wprob φ A * wprob φ B
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def DependsOn (A : Set (ConfigSpace E)) (S : Set E) : Prop :=
∀ ω ω', agreeOn S ω ω' → (ω ∈ A ↔ ω' ∈ A)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:214
noncomputable def wprob [Fintype E] [DecidableEq E] (φ : E → Bool → ℝ)
(S : Set (ConfigSpace E)) : ℝ :=
∑ ω, S.indicator (fun _ => (1 : ℝ)) ω * pweight φ ω
MathlibExt/Probability/CorrelationInequalities/BK.lean:101
TheoremReimer's inequality for events on disjoint coordinate sets#✓fully proved
Reimer's inequality, with equality, for events depending on disjoint coordinate sets.
theorem reimer_wprob_of_disjoint_support [Fintype E] [DecidableEq E] (φ : E → Bool → ℝ)
(hφ1 : ∀ x, φ x false + φ x true = 1)
{A B : Set (ConfigSpace E)} {S T : Set E}
(hA : DependsOn A S) (hB : DependsOn B T) (hST : Disjoint S T) :
wprob φ (disjointOccurrence A B) = wprob φ A * wprob φ B
abbrev ConfigSpace (E : Type*) : Type _ := E → Bool
MathlibExt/Probability/Configuration/ConfigSpace.lean:40
def DependsOn (A : Set (ConfigSpace E)) (S : Set E) : Prop :=
∀ ω ω', agreeOn S ω ω' → (ω ∈ A ↔ ω' ∈ A)
MathlibExt/Probability/CorrelationInequalities/ReimerCompression.lean:214
noncomputable def wprob [Fintype E] [DecidableEq E] (φ : E → Bool → ℝ)
(S : Set (ConfigSpace E)) : ℝ :=
∑ ω, S.indicator (fun _ => (1 : ℝ)) ω * pweight φ ω
MathlibExt/Probability/CorrelationInequalities/BK.lean:101
def disjointOccurrence (A B : Set (ConfigSpace E)) : Set (ConfigSpace E) :=
{ω | ∃ K L : Set E, Disjoint K L ∧ OccursOn A K ω ∧ OccursOn B L ω}
MathlibExt/Probability/CorrelationInequalities/DisjointOccurrence.lean:92
Uses 8 · Used by 2
DefinitionNumber of disjoint pairs from two families#✓fully proved
The number of disjoint pairs (S, T) ∈ 𝒜 × ℬ.
Used by 5
TheoremRecursion for disjoint pairs by membership of a coordinate#✓fully proved
Splitting disjoint pairs by membership of i: pairs where neither, only the first, or
only the second set contains i.
theorem dpairsCount_fiber_recursion (𝒜 ℬ : Finset (Finset α)) (i : α) :
dpairsCount 𝒜 ℬ
= dpairsCount (𝒜.nonMemberSubfamily i) (ℬ.nonMemberSubfamily i)
+ dpairsCount (𝒜.memberSubfamily i) (ℬ.nonMemberSubfamily i)
+ dpairsCount (𝒜.nonMemberSubfamily i) (ℬ.memberSubfamily i)
def dpairsCount (𝒜 ℬ : Finset (Finset α)) : ℕ :=
((𝒜 ×ˢ ℬ).filter (fun p => Disjoint p.1 p.2)).card
MathlibExt/Probability/CorrelationInequalities/ReimerDisjointPairCount.lean:43
Uses 1 · Used by 2
TheoremOne compression step on the doubled disjoint-pair family#✓fully proved
Bookkeeping for one compression step at coordinate i on boxDoubled 𝒜 ℬ:
doubleCompress i preserves its size and makes it down-closed at inl i and up-closed at
inr i, and sizes split over memberSubfamily i and nonMemberSubfamily i.
theorem reimer_butterfly_compress_step (𝒜 ℬ : Finset (Finset α)) (i : α) :
(doubleCompress i (boxDoubled 𝒜 ℬ)).card = (boxDoubled 𝒜 ℬ).card
∧ IsDownAtLeft i (doubleCompress i (boxDoubled 𝒜 ℬ))
∧ IsUpAtRight i (doubleCompress i (boxDoubled 𝒜 ℬ))
∧ (boxDoubled 𝒜 ℬ).card
= (boxDoubled (𝒜.nonMemberSubfamily i) (ℬ.nonMemberSubfamily i)).card
+ (boxDoubled (𝒜.memberSubfamily i) (ℬ.nonMemberSubfamily i)).card
+ (boxDoubled (𝒜.nonMemberSubfamily i) (ℬ.memberSubfamily i)).card
∧ (𝒜.memberSubfamily i).card + (𝒜.nonMemberSubfamily i).card = 𝒜.card
∧ (ℬ.memberSubfamily i).card + (ℬ.nonMemberSubfamily i).card = ℬ.card
noncomputable def doubleCompress (i : α) (𝒜 : Finset (Finset (α ⊕ α))) :
Finset (Finset (α ⊕ α)) :=
upRight i (downLeft i 𝒜)
MathlibExt/Probability/CorrelationInequalities/ReimerDoubled.lean:160
noncomputable def boxDoubled (𝒜 ℬ : Finset (Finset α)) : Finset (Finset (α ⊕ α)) :=
((𝒜 ×ˢ ℬ).filter (fun p => Disjoint p.1 p.2)).image (fun p => dbl p.1 p.2)
MathlibExt/Probability/CorrelationInequalities/ReimerDoubled.lean:91
def IsDownAtLeft (i : α) (𝒜 : Finset (Finset (α ⊕ α))) : Prop :=
∀ s ∈ 𝒜, s.erase (Sum.inl i) ∈ 𝒜
MathlibExt/Probability/CorrelationInequalities/ReimerDoubled.lean:170
def IsUpAtRight (i : α) (𝒜 : Finset (Finset (α ⊕ α))) : Prop :=
∀ s ∈ 𝒜, insert (Sum.inr i) s ∈ 𝒜
MathlibExt/Probability/CorrelationInequalities/ReimerDoubled.lean:174
Uses 10
TheoremDown-compression does not decrease the disjoint-pair count#✓fully proved
Down-compressing both families at i does not decrease the number of disjoint pairs.
theorem dpairsCount_downDown_mono (𝒜 ℬ : Finset (Finset α)) (i : α) :
dpairsCount 𝒜 ℬ ≤ dpairsCount (Down.compression i 𝒜) (Down.compression i ℬ)
def dpairsCount (𝒜 ℬ : Finset (Finset α)) : ℕ :=
((𝒜 ×ˢ ℬ).filter (fun p => Disjoint p.1 p.2)).card
MathlibExt/Probability/CorrelationInequalities/ReimerDisjointPairCount.lean:43
Uses 2
DefinitionWeight kernel of disjoint pairs off a coordinate#✓fully proved
fwt' w i S * fwt' w i T for disjoint S, T, and 0 otherwise.
noncomputable def pairKernel' (w : α → Bool → ℝ) (i : α) (S T : Finset α) : ℝ :=
if Disjoint S T then fwt' w i S * fwt' w i T else 0
noncomputable def fwt' (w : α → Bool → ℝ) (i : α) (S : Finset α) : ℝ :=
∏ x ∈ univ.erase i, w x (decide (x ∈ S))
MathlibExt/Probability/CorrelationInequalities/ReimerWeightedPairs.lean:125
Uses 1 · Used by 1
TheoremDown-compression does not decrease weighted disjoint pairs#✓fully proved
Down-compressing both families at i does not decrease the weighted number of disjoint
pairs when w i true ≤ w i false.
theorem wdpairs_downDown_mono {w : α → Bool → ℝ} (hw : ∀ x b, 0 ≤ w x b) (i : α)
(hdom : w i true ≤ w i false) (𝒜 ℬ : Finset (Finset α)) :
wdpairs w 𝒜 ℬ ≤ wdpairs w (Down.compression i 𝒜) (Down.compression i ℬ)
noncomputable def wdpairs (w : α → Bool → ℝ) (𝒜 ℬ : Finset (Finset α)) : ℝ :=
∑ p ∈ (𝒜 ×ˢ ℬ).filter (fun p => Disjoint p.1 p.2), fwt w p.1 * fwt w p.2
MathlibExt/Probability/CorrelationInequalities/ReimerWeightedPairs.lean:156
TheoremWeighted down-compression monotonicity fails for general weights#✓fully proved
Without w i true ≤ w i false, wdpairs_downDown_mono can fail.
theorem wdpairs_downDown_not_mono_general :
∃ (w : Fin 1 → Bool → ℝ) (𝒜 ℬ : Finset (Finset (Fin 1))) (i : Fin 1),
(∀ x b, 0 ≤ w x b) ∧
¬ (wdpairs w 𝒜 ℬ ≤ wdpairs w (Down.compression i 𝒜) (Down.compression i ℬ))
noncomputable def wdpairs (w : α → Bool → ℝ) (𝒜 ℬ : Finset (Finset α)) : ℝ :=
∑ p ∈ (𝒜 ×ˢ ℬ).filter (fun p => Disjoint p.1 p.2), fwt w p.1 * fwt w p.2
MathlibExt/Probability/CorrelationInequalities/ReimerWeightedPairs.lean:156
Uses 2
DefinitionIterated down-compression along a list of coordinates#✓fully proved
Down-compression at each coordinate of cs in turn (the head of cs is applied last).
def iterDownComp (cs : List α) (𝒜 : Finset (Finset α)) : Finset (Finset α) :=
cs.foldr Down.compression 𝒜
Used by 1
DefinitionDown-compression map on a single finset#✓fully proved
The compression map: erase i from s when s contains i and s.erase i ∉ 𝒜.
noncomputable def cmap (i : α) (𝒜 : Finset (Finset α)) (s : Finset α) : Finset α :=
if i ∈ s ∧ s.erase i ∉ 𝒜 then s.erase i else s
Used by 1
DefinitionTotal size of a family of finsets#✓fully proved
The total size ∑ S ∈ 𝒜, #S of a family.
Used by 1
TheoremIterated down-compression reaches a lower set#✓fully proved
Some iterated down-compression of 𝒜 is a lower set.
theorem exists_iterDownComp_isLowerSet (𝒜 : Finset (Finset α)) :
∃ cs : List α, IsLowerSet ((iterDownComp cs 𝒜) : Set (Finset α))
def iterDownComp (cs : List α) (𝒜 : Finset (Finset α)) : Finset (Finset α) :=
cs.foldr Down.compression 𝒜
MathlibExt/Probability/CorrelationInequalities/ReimerIteratedCompression.lean:63
Uses 3
TheoremMembers of a disjoint-union family avoiding a coordinate#✓fully proved
The members of 𝒜 ○ ℬ avoiding i are exactly the disjoint unions of members of 𝒜 and
ℬ avoiding i.
DefinitionFamily closed under erasing a coordinate#✓fully proved
IsDownAtCoord i 𝒜: the family 𝒜 is closed under erasing i.
Used by 1
DefinitionFirst family in the box-compression counterexample#✓fully proved
The family {∅, {1}} on Fin 2, the first family of the counterexample
StatMech.reimerStep_box_compression_false.
Used by 1
DefinitionSecond family in the box-compression counterexample#✓fully proved
The family {∅, {0, 1}} on Fin 2, the second family of the counterexample
StatMech.reimerStep_box_compression_false.
Used by 1
TheoremDown-compression can shrink the disjoint-union family#✓fully proved
Down-compressing both families at the same coordinate can strictly decrease the size of
𝒜 ○ ℬ.
theorem reimerStep_box_compression_false :
∃ (𝒜 ℬ : Finset (Finset (Fin 2))) (i : Fin 2),
(Down.compression i 𝒜 ○ Down.compression i ℬ).card < (𝒜 ○ ℬ).card
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.