Skip to content

Commit ebdea2e

Browse files
committed
feat(ConditionallyCompleteLattice): add arity-two versions of iSup lemmas
1 parent 1c97f0e commit ebdea2e

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

@@ -139,6 +139,10 @@ theorem IsGLB.ciInf_set_eq {s : Set β} {f : β → α} (H : IsGLB (f '' s) a) (
139139
theorem ciSup_le [Nonempty ι] {f : ι → α} {c : α} (H : ∀ x, f x ≤ c) : iSup f ≤ c :=
140140
csSup_le (range_nonempty f) (by rwa [forall_mem_range])
141141

142+
theorem ciSup₂_le [Nonempty ι] [∀ i, Nonempty (κ i)] {f : ∀ i, κ i → α}
143+
(h : ∀ i j, f i j ≤ a) : ⨆ (i) (j), f i j ≤ a :=
144+
ciSup_le fun i => ciSup_le <| h i
145+
142146
/-- The indexed supremum of a function is bounded below by the value taken at one point -/
143147
theorem le_ciSup {f : ι → α} (H : BddAbove (range f)) (c : ι) : f c ≤ iSup f :=
144148
le_csSup H (mem_range_self _)
@@ -181,6 +185,10 @@ theorem ciInf_mono {f g : ι → α} (B : BddBelow (range f)) (H : ∀ x, f x
181185
theorem le_ciInf [Nonempty ι] {f : ι → α} {c : α} (H : ∀ x, c ≤ f x) : c ≤ iInf f :=
182186
ciSup_le (α := αᵒᵈ) H
183187

188+
theorem le_ciInf₂ [Nonempty ι] [∀ i, Nonempty (κ i)] {f : ∀ i, κ i → α} (h : ∀ i j, a ≤ f i j) :
189+
a ≤ ⨅ (i) (j), f i j :=
190+
le_ciInf fun i => le_ciInf <| h i
191+
184192
/-- The indexed infimum of a function is bounded above by the value taken at one point -/
185193
theorem ciInf_le {f : ι → α} (H : BddBelow (range f)) (c : ι) : iInf f ≤ f c :=
186194
le_ciSup (α := αᵒᵈ) H c
@@ -373,6 +381,11 @@ theorem exists_lt_of_lt_ciSup [Nonempty ι] {f : ι → α} (h : b < iSup f) :
373381
let ⟨_, ⟨i, rfl⟩, h⟩ := exists_lt_of_lt_csSup (range_nonempty f) h
374382
⟨i, h⟩
375383

384+
theorem exists_lt_of_lt_ciSup₂ [Nonempty ι] [∀ i, Nonempty (κ i)]
385+
{f : ∀ i, κ i → α} (h : a < ⨆ (i) (j), f i j) : ∃ i j, a < f i j := by
386+
contrapose! h
387+
exact ciSup₂_le h
388+
376389
/-- Indexed version of `exists_lt_of_csInf_lt`.
377390
When `iInf f < a`, there is an element `i` such that `f i < a`.
378391
-/
@@ -479,6 +492,9 @@ theorem ciSup_le_iff' {f : ι → α} (h : BddAbove (range f)) {a : α} :
479492
theorem ciSup_le' {f : ι → α} {a : α} (h : ∀ i, f i ≤ a) : ⨆ i, f i ≤ a :=
480493
csSup_le' <| forall_mem_range.2 h
481494

495+
theorem ciSup₂_le' {f : ∀ i, κ i → α} (h : ∀ i j, f i j ≤ a) : ⨆ (i) (j), f i j ≤ a :=
496+
ciSup_le' fun i => ciSup_le' <| h i
497+
482498
@[simp]
483499
theorem ciSup_bot : ⨆ _ : ι, (⊥ : α) = ⊥ := le_bot_iff.mp (ciSup_le' fun _ ↦ bot_le)
484500

@@ -491,6 +507,11 @@ theorem exists_lt_of_lt_ciSup' {f : ι → α} {a : α} (h : a < ⨆ i, f i) :
491507
contrapose! h
492508
exact ciSup_le' h
493509

510+
theorem exists_lt_of_lt_ciSup₂' {f : ∀ i, κ i → α} (h : a < ⨆ (i) (j), f i j) :
511+
∃ i j, a < f i j := by
512+
contrapose! h
513+
exact ciSup₂_le' h
514+
494515
theorem ciSup_mono' {ι'} {f : ι → α} {g : ι' → α} (hg : BddAbove (range g))
495516
(h : ∀ i, ∃ i', f i ≤ g i') : iSup f ≤ iSup g :=
496517
ciSup_le' fun i => Exists.elim (h i) (le_ciSup_of_le hg)

0 commit comments

Comments
 (0)