Skip to content

Commit 37c3f09

Browse files
committed
merge master
2 parents fff759c + cfd711c commit 37c3f09

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

Mathlib/Order/ConditionallyCompleteLattice/Indexed.lean

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ assert_not_exists Multiset
2323

2424
open Function OrderDual Set
2525

26-
variable {α β γ : Type*} {ι : Sort*}
26+
variable {α β γ : Type*} {ι : Sort*} {κ : ι → Sort*}
2727

2828
section
2929

@@ -136,9 +136,16 @@ theorem IsGLB.ciInf_set_eq {s : Set β} {f : β → α} (H : IsGLB (f '' s) a) (
136136
IsGLB.csInf_eq (image_eq_range f s ▸ H) (image_eq_range f s ▸ Hne.image f)
137137

138138
/-- The indexed supremum of a function is bounded above by a uniform bound -/
139+
@[to_dual le_ciInf /-- The indexed minimum of a function is bounded below by a uniform
140+
lower bound -/]
139141
theorem ciSup_le [Nonempty ι] {f : ι → α} {c : α} (H : ∀ x, f x ≤ c) : iSup f ≤ c :=
140142
csSup_le (range_nonempty f) (by rwa [forall_mem_range])
141143

144+
@[to_dual le_ciInf₂]
145+
theorem ciSup₂_le [Nonempty ι] [∀ i, Nonempty (κ i)] {f : ∀ i, κ i → α}
146+
(h : ∀ i j, f i j ≤ a) : ⨆ (i) (j), f i j ≤ a :=
147+
ciSup_le fun i ↦ ciSup_le <| h i
148+
142149
/-- The indexed supremum of a function is bounded below by the value taken at one point -/
143150
theorem le_ciSup {f : ι → α} (H : BddAbove (range f)) (c : ι) : f c ≤ iSup f :=
144151
le_csSup H (mem_range_self _)
@@ -431,6 +438,12 @@ When `iInf f < a`, there is an element `i` such that `f i < a`.
431438
theorem exists_lt_of_ciInf_lt [Nonempty ι] {f : ι → α} (h : iInf f < a) : ∃ i, f i < a :=
432439
exists_lt_of_lt_ciSup (α := αᵒᵈ) h
433440

441+
@[to_dual exists_lt_of_ciInf₂_lt]
442+
theorem exists_lt_of_lt_ciSup₂ [Nonempty ι] [∀ i, Nonempty (κ i)]
443+
{f : ∀ i, κ i → α} (h : a < ⨆ (i) (j), f i j) : ∃ i j, a < f i j := by
444+
contrapose! h
445+
exact ciSup₂_le h
446+
434447
theorem lt_ciSup_iff [Nonempty ι] {f : ι → α} (hb : BddAbove (range f)) :
435448
a < iSup f ↔ ∃ i, a < f i := by
436449
simpa only [mem_range, exists_exists_eq_and] using lt_csSup_iff hb (range_nonempty _)
@@ -531,6 +544,9 @@ theorem ciSup_le_iff' {f : ι → α} (h : BddAbove (range f)) {a : α} :
531544
theorem ciSup_le' {f : ι → α} {a : α} (h : ∀ i, f i ≤ a) : ⨆ i, f i ≤ a :=
532545
csSup_le' <| forall_mem_range.2 h
533546

547+
theorem ciSup₂_le' {f : ∀ i, κ i → α} (h : ∀ i j, f i j ≤ a) : ⨆ (i) (j), f i j ≤ a :=
548+
ciSup_le' fun i ↦ ciSup_le' <| h i
549+
534550
@[simp]
535551
theorem ciSup_bot : ⨆ _ : ι, (⊥ : α) = ⊥ := le_bot_iff.mp (ciSup_le' fun _ ↦ bot_le)
536552

@@ -543,6 +559,11 @@ theorem exists_lt_of_lt_ciSup' {f : ι → α} {a : α} (h : a < ⨆ i, f i) :
543559
contrapose! h
544560
exact ciSup_le' h
545561

562+
theorem exists_lt_of_lt_ciSup₂' {f : ∀ i, κ i → α} (h : a < ⨆ (i) (j), f i j) :
563+
∃ i j, a < f i j := by
564+
contrapose! h
565+
exact ciSup₂_le' h
566+
546567
theorem ciSup_mono_of_forall_exists' {ι'} {f : ι → α} {g : ι' → α} (hg : BddAbove <| range g)
547568
(h : ∀ i, ∃ i', f i ≤ g i') : ⨆ i, f i ≤ ⨆ i', g i' :=
548569
ciSup_le' fun i ↦ h i |>.elim <| le_ciSup_of_le hg

0 commit comments

Comments
 (0)