Skip to content

Commit 12958ea

Browse files
committed
feat: ⨅ i, f i ≤ ⨆ i, f i (#20573)
From my PhD (LeanCamCombi)
1 parent a3ae543 commit 12958ea

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

Mathlib/Data/Set/Lattice.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ theorem subset_iUnion : ∀ (s : ι → Set β) (i : ι), s i ⊆ ⋃ i, s i :=
248248
theorem iInter_subset : ∀ (s : ι → Set β) (i : ι), ⋂ i, s i ⊆ s i :=
249249
iInf_le
250250

251+
lemma iInter_subset_iUnion [Nonempty ι] {s : ι → Set α} : ⋂ i, s i ⊆ ⋃ i, s i := iInf_le_iSup
252+
251253
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (i j) -/
252254
theorem subset_iUnion₂ {s : ∀ i, κ i → Set α} (i : ι) (j : κ i) : s i j ⊆ ⋃ (i') (j'), s i' j' :=
253255
le_iSup₂ i j
@@ -728,6 +730,9 @@ theorem biInter_subset_of_mem {s : Set α} {t : α → Set β} {x : α} (xs : x
728730
⋂ x ∈ s, t x ⊆ t x :=
729731
iInter₂_subset x xs
730732

733+
lemma biInter_subset_biUnion {s : Set α} (hs : s.Nonempty) {t : α → Set β} :
734+
⋂ x ∈ s, t x ⊆ ⋃ x ∈ s, t x := biInf_le_biSup hs
735+
731736
theorem biUnion_subset_biUnion_left {s s' : Set α} {t : α → Set β} (h : s ⊆ s') :
732737
⋃ x ∈ s, t x ⊆ ⋃ x ∈ s', t x :=
733738
iUnion₂_subset fun _ hx => subset_biUnion_of_mem <| h hx

Mathlib/Order/CompleteLattice.lean

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,9 @@ theorem le_iSup (f : ι → α) (i : ι) : f i ≤ iSup f :=
632632
theorem iInf_le (f : ι → α) (i : ι) : iInf f ≤ f i :=
633633
sInf_le ⟨i, rfl⟩
634634

635+
lemma iInf_le_iSup [Nonempty ι] : ⨅ i, f i ≤ ⨆ i, f i :=
636+
(iInf_le _ (Classical.arbitrary _)).trans <| le_iSup _ (Classical.arbitrary _)
637+
635638
@[deprecated le_iSup (since := "2024-12-13")]
636639
theorem le_iSup' (f : ι → α) (i : ι) : f i ≤ iSup f := le_iSup f i
637640

@@ -1033,14 +1036,16 @@ lemma Equiv.biInf_comp {ι ι' : Type*} {g : ι' → α} (e : ι ≃ ι') (s : S
10331036
⨅ i ∈ e.symm '' s, g (e i) = ⨅ i ∈ s, g i :=
10341037
e.biSup_comp s (α := αᵒᵈ)
10351038

1036-
lemma biInf_le {ι : Type*} {s : Set ι} (f : ι → α) {i : ι} (hi : i ∈ s) :
1037-
⨅ i ∈ s, f i ≤ f i := by
1038-
simpa only [iInf_subtype'] using iInf_le (ι := s) (f := f ∘ (↑)) ⟨i, hi⟩
1039+
lemma biInf_le {ι : Type*} {s : Set ι} (f : ι → α) {i : ι} (hi : i ∈ s) : ⨅ i ∈ s, f i ≤ f i :=
1040+
iInf₂_le i hi
10391041

1040-
lemma le_biSup {ι : Type*} {s : Set ι} (f : ι → α) {i : ι} (hi : i ∈ s) :
1041-
f i ≤ ⨆ i ∈ s, f i :=
1042+
lemma le_biSup {ι : Type*} {s : Set ι} (f : ι → α) {i : ι} (hi : i ∈ s) : f i ≤ ⨆ i ∈ s, f i :=
10421043
biInf_le (α := αᵒᵈ) f hi
10431044

1045+
lemma biInf_le_biSup {ι : Type*} {s : Set ι} (hs : s.Nonempty) {f : ι → α} :
1046+
⨅ i ∈ s, f i ≤ ⨆ i ∈ s, f i :=
1047+
(biInf_le _ hs.choose_spec).trans <| le_biSup _ hs.choose_spec
1048+
10441049
/- TODO: here is another example where more flexible pattern matching
10451050
might help.
10461051

Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ theorem ciInf_set_le {f : β → α} {s : Set β} (H : BddBelow (f '' s)) {c :
151151
⨅ i : s, f i ≤ f c :=
152152
le_ciSup_set (α := αᵒᵈ) H hc
153153

154+
lemma ciInf_le_ciSup [Nonempty ι] {f : ι → α} (hf : BddBelow (range f)) (hf' : BddAbove (range f)) :
155+
⨅ i, f i ≤ ⨆ i, f i :=
156+
(ciInf_le hf (Classical.arbitrary _)).trans <| le_ciSup hf' (Classical.arbitrary _)
157+
154158
@[simp]
155159
theorem ciSup_const [hι : Nonempty ι] {a : α} : ⨆ _ : ι, a = a := by
156160
rw [iSup, range_const, csSup_singleton]

0 commit comments

Comments
 (0)