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)
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)
Uses 1 · Used by 3

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
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
Uses 3

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
Uses 8

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)
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
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
Uses 6 · Used by 2

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
Uses 8 · Used by 2

DefinitionNumber of disjoint pairs from two families#✓fully proved

The number of disjoint pairs (S, T) ∈ 𝒜 × ℬ.

def dpairsCount (𝒜 ℬ : Finset (Finset α)) : ℕ :=
  ((𝒜 ×ˢ ℬ).filter (fun p => Disjoint p.1 p.2)).card
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)
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
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 ℬ)
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
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 ℬ)
Uses 5

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 ℬ))
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.

noncomputable def totalSize (𝒜 : Finset (Finset α)) : ℕ := ∑ S ∈ 𝒜, S.card
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 α))
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.

theorem boxFamily_filter_notMem_coord (i : α) (𝒜 ℬ : Finset (Finset α)) :
    (𝒜 ○ ℬ).filter (fun U => i ∉ U)
      = (𝒜.filter (fun S => i ∉ S)) ○ (ℬ.filter (fun T => i ∉ T))

DefinitionFamily closed under erasing a coordinate#✓fully proved

IsDownAtCoord i 𝒜: the family 𝒜 is closed under erasing i.

def IsDownAtCoord (i : α) (𝒜 : Finset (Finset α)) : Prop := ∀ s ∈ 𝒜, s.erase 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.

def reimerStepCexA : Finset (Finset (Fin 2)) := {∅, {1}}
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.

def reimerStepCexB : Finset (Finset (Fin 2)) := {∅, {0, 1}}
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
Uses 2
25 fully proved

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.