File: Mathlib/Combinatorics/SetFamily/Shatter.lean

full_name: Finset.Shatters
code: /-- A set family `𝒜` shatters a set `s` if all subsets of `s` can be obtained as the intersection
of `s` and some element of the set family, and we denote this `𝒜.Shatters s`. We also say that `s`
is *traced* by `𝒜`. -/
def Shatters (𝒜 : Finset (Finset α)) (s : Finset α) : Prop 
goal: Prop

full_name: Finset.instDecidablePredShatters
code: instance : DecidablePred 𝒜.Shatters 
goal: DecidablePred 𝒜.Shatters

full_name: Finset.Shatters.exists_inter_eq_singleton
code: lemma Shatters.exists_inter_eq_singleton (hs : Shatters 𝒜 s) (ha : a ∈ s) : ∃ t ∈ 𝒜, s ∩ t = {a} 
goal: ∃ t ∈ 𝒜, s ∩ t = {a}

full_name: Finset.Shatters.mono_left
code: lemma Shatters.mono_left (h : 𝒜 ⊆ ℬ) (h𝒜 : 𝒜.Shatters s) : ℬ.Shatters s 
goal: ℬ.Shatters s

full_name: Finset.Shatters.mono_right
code: lemma Shatters.mono_right (h : t ⊆ s) (hs : 𝒜.Shatters s) : 𝒜.Shatters t 
goal: 𝒜.Shatters t

full_name: Finset.Shatters.exists_superset
code: lemma Shatters.exists_superset (h : 𝒜.Shatters s) : ∃ t ∈ 𝒜, s ⊆ t 
goal: ∃ t ∈ 𝒜, s ⊆ t

full_name: Finset.shatters_of_forall_subset
code: lemma shatters_of_forall_subset (h : ∀ t, t ⊆ s → t ∈ 𝒜) : 𝒜.Shatters s 
goal: 𝒜.Shatters s

full_name: Finset.Shatters.nonempty
code: protected lemma Shatters.nonempty (h : 𝒜.Shatters s) : 𝒜.Nonempty 
goal: 𝒜.Nonempty

full_name: Finset.shatters_empty
code: @[simp] lemma shatters_empty : 𝒜.Shatters ∅ ↔ 𝒜.Nonempty 
goal: 𝒜.Shatters ∅ ↔ 𝒜.Nonempty

full_name: Finset.Shatters.subset_iff
code: protected lemma Shatters.subset_iff (h : 𝒜.Shatters s) : t ⊆ s ↔ ∃ u ∈ 𝒜, s ∩ u = t 
goal: t ⊆ s ↔ ∃ u ∈ 𝒜, s ∩ u = t

full_name: Finset.shatters_iff
code: lemma shatters_iff : 𝒜.Shatters s ↔ 𝒜.image (fun t ↦ s ∩ t) = s.powerset 
goal: 𝒜.Shatters s ↔ Finset.image (fun t => s ∩ t) 𝒜 = s.powerset

full_name: Finset.univ_shatters
code: lemma univ_shatters [Fintype α] : univ.Shatters s 
goal: Finset.univ.Shatters s

full_name: Finset.shatters_univ
code: @[simp] lemma shatters_univ [Fintype α] : 𝒜.Shatters univ ↔ 𝒜 = univ 
goal: 𝒜.Shatters Finset.univ ↔ 𝒜 = Finset.univ

full_name: Finset.shatterer
code: /-- The set family of sets that are shattered by `𝒜`. -/
def shatterer (𝒜 : Finset (Finset α)) : Finset (Finset α) 
goal: Finset (Finset α)

full_name: Finset.mem_shatterer
code: @[simp] lemma mem_shatterer : s ∈ 𝒜.shatterer ↔ 𝒜.Shatters s 
goal: s ∈ 𝒜.shatterer ↔ 𝒜.Shatters s

full_name: Finset.shatterer_mono
code: lemma shatterer_mono (h : 𝒜 ⊆ ℬ) : 𝒜.shatterer ⊆ ℬ.shatterer 
goal: 𝒜.shatterer ⊆ ℬ.shatterer

full_name: Finset.subset_shatterer
code: lemma subset_shatterer (h : IsLowerSet (𝒜 : Set (Finset α))) : 𝒜 ⊆ 𝒜.shatterer 
goal: 𝒜 ⊆ 𝒜.shatterer

full_name: Finset.isLowerSet_shatterer
code: @[simp] lemma isLowerSet_shatterer (𝒜 : Finset (Finset α)) :
    IsLowerSet (𝒜.shatterer : Set (Finset α)) 
goal: IsLowerSet ↑𝒜.shatterer

full_name: Finset.shatterer_eq
code: @[simp] lemma shatterer_eq : 𝒜.shatterer = 𝒜 ↔ IsLowerSet (𝒜 : Set (Finset α)) 
goal: 𝒜.shatterer = 𝒜 ↔ IsLowerSet ↑𝒜

full_name: Finset.shatterer_idem
code: @[simp] lemma shatterer_idem : 𝒜.shatterer.shatterer = 𝒜.shatterer 
goal: 𝒜.shatterer.shatterer = 𝒜.shatterer

full_name: Finset.shatters_shatterer
code: @[simp] lemma shatters_shatterer : 𝒜.shatterer.Shatters s ↔ 𝒜.Shatters s 
goal: 𝒜.shatterer.Shatters s ↔ 𝒜.Shatters s

full_name: _private.Mathlib.Combinatorics.SetFamily.Shatter.0.Finset.aux
code: private lemma aux (h : ∀ t ∈ 𝒜, a ∉ t) (ht : 𝒜.Shatters t) : a ∉ t 
goal: a ∉ t

full_name: Finset.card_le_card_shatterer
code: /-- Pajor's variant of the **Sauer-Shelah lemma**. -/
lemma card_le_card_shatterer (𝒜 : Finset (Finset α)) : 𝒜.card ≤ 𝒜.shatterer.card 
goal: 𝒜.card ≤ 𝒜.shatterer.card

full_name: Finset.Shatters.of_compression
code: lemma Shatters.of_compression (hs : (𝓓 a 𝒜).Shatters s) : 𝒜.Shatters s 
goal: 𝒜.Shatters s

full_name: Finset.shatterer_compress_subset_shatterer
code: lemma shatterer_compress_subset_shatterer (a : α) (𝒜 : Finset (Finset α)) :
    (𝓓 a 𝒜).shatterer ⊆ 𝒜.shatterer 
goal: (𝓓 a 𝒜).shatterer ⊆ 𝒜.shatterer

full_name: Finset.vcDim
code: /-- The Vapnik-Chervonenkis dimension of a set family is the maximal size of a set it shatters. -/
def vcDim (𝒜 : Finset (Finset α)) : ℕ 
goal: ℕ

full_name: Finset.Shatters.card_le_vcDim
code: lemma Shatters.card_le_vcDim (hs : 𝒜.Shatters s) : s.card ≤ 𝒜.vcDim 
goal: s.card ≤ 𝒜.vcDim

full_name: Finset.vcDim_compress_le
code: /-- Down-compressing decreases the VC-dimension. -/
lemma vcDim_compress_le (a : α) (𝒜 : Finset (Finset α)) : (𝓓 a 𝒜).vcDim ≤ 𝒜.vcDim 
goal: (𝓓 a 𝒜).vcDim ≤ 𝒜.vcDim

full_name: Finset.card_shatterer_le_sum_vcDim
code: /-- The **Sauer-Shelah lemma**. -/
lemma card_shatterer_le_sum_vcDim [Fintype α] :
    𝒜.shatterer.card ≤ ∑ k ∈ Iic 𝒜.vcDim, (Fintype.card α).choose k 
goal: 𝒜.shatterer.card ≤ ∑ k ∈ Finset.Iic 𝒜.vcDim, (Fintype.card α).choose k