@@ -20,6 +20,8 @@ This file defines intersecting families and proves their basic properties.
2020* `Set.Intersecting.card_le`: An intersecting family can only take up to half the elements, because
2121 `a` and `aᶜ` cannot simultaneously be in it.
2222* `Set.Intersecting.is_max_iff_card_eq`: Any maximal intersecting family takes up half the elements.
23+ * `Set.IsIntersectingOf`: Predicate stating that a family `𝒜` of finsets is `L`-intersecting, i.e.,
24+ meaning the intersection size of every pair of distinct members of `𝒜` belongs to `L ⊆ ℕ`.
2325
2426 ## References
2527
@@ -32,12 +34,12 @@ assert_not_exists Monoid
3234
3335open Finset
3436
35- variable {α : Type *}
36-
3737namespace Set
3838
3939section SemilatticeInf
4040
41+ variable {α : Type *}
42+
4143variable [SemilatticeInf α] [OrderBot α] {s t : Set α} {a b c : α}
4244
4345/-- A set family is intersecting if every pair of elements is non-disjoint. -/
@@ -122,6 +124,10 @@ theorem Intersecting.isUpperSet' {s : Finset α} (hs : (s : Set α).Intersecting
122124
123125end SemilatticeInf
124126
127+ section
128+
129+ variable {α : Type *}
130+
125131theorem Intersecting.exists_mem_set {𝒜 : Set (Set α)} (h𝒜 : 𝒜.Intersecting) {s t : Set α}
126132 (hs : s ∈ 𝒜) (ht : t ∈ 𝒜) : ∃ a, a ∈ s ∧ a ∈ t :=
127133 not_disjoint_iff.1 <| h𝒜 hs ht
@@ -189,4 +195,53 @@ theorem Intersecting.exists_card_eq (hs : (s : Set α).Intersecting) :
189195 rw [Nat.le_div_iff_mul_le Nat.two_pos, Nat.mul_comm]
190196 exact ht.card_le
191197
198+ end
199+
200+ /-!
201+ ### `L`-intersecting families
202+
203+ This section defines `L`-intersecting families and establishes their basic properties.
204+ -/
205+
206+ variable {L L' : Set ℕ}
207+ variable {α : Type *} [DecidableEq α]
208+ variable {𝒜 ℬ : Set (Finset α)}
209+
210+ /--
211+ A family `𝒜` of finite subsets of `α` is `L`-intersecting if the intersection size of every pair of
212+ distinct members of `𝒜` belongs to `L ⊆ ℕ`.
213+
214+ That is, for all `s, t ∈ 𝒜` with `s ≠ t`, we have `|(s ∩ t)| ∈ L`.
215+ -/
216+ def IsIntersectingOf (L : Set ℕ) (𝒜 : Set (Finset α)) : Prop := 𝒜.Pairwise fun s t ↦ #(s ∩ t) ∈ L
217+
218+ namespace IsIntersectingOf
219+
220+ /--
221+ An `L`-intersecting family is also `L'`-intersecting whenever `L ⊆ L'`.
222+ -/
223+ @[gcongr]
224+ theorem mono (h : L ⊆ L') (hL : IsIntersectingOf L 𝒜) : IsIntersectingOf L' 𝒜 := by tauto
225+
226+ /--
227+ An `L`-intersecting family remains `L`-intersecting under restriction to any subfamily.
228+ -/
229+ @[gcongr]
230+ theorem anti (h : ℬ ⊆ 𝒜) (h𝒜 : IsIntersectingOf L 𝒜) : IsIntersectingOf L ℬ := Pairwise.mono h h𝒜
231+
232+ /--
233+ The empty family of finite sets is `L`-intersecting, vacuously, because it contains no pairs of
234+ sets.
235+ -/
236+ @[simp]
237+ protected theorem empty : IsIntersectingOf L (∅ : Set (Finset α)) := by tauto
238+
239+ /--
240+ Every family of finite sets is `univ`-intersecting.
241+ -/
242+ @[simp]
243+ protected theorem univ : IsIntersectingOf univ 𝒜 := 𝒜.pairwise_of_forall _ fun _ _ ↦ trivial
244+
245+ end IsIntersectingOf
246+
192247end Set
0 commit comments