@@ -33,29 +33,22 @@ Extension of `iSup` and `iInf` from a preorder `α` to `WithTop α` and `WithBot
3333
3434variable [Preorder α]
3535
36- @[simp]
36+ @ [to_dual (attr := simp) ]
3737theorem WithTop.iInf_empty [IsEmpty ι] [InfSet α] (f : ι → WithTop α) :
3838 ⨅ i, f i = ⊤ := by rw [iInf, range_eq_empty, WithTop.sInf_empty]
3939
40- @[norm_cast]
40+ @ [to_dual (attr := norm_cast) ]
4141theorem WithTop.coe_iInf [Nonempty ι] [InfSet α] {f : ι → α} (hf : BddBelow (range f)) :
4242 ↑(⨅ i, f i) = (⨅ i, f i : WithTop α) := by
4343 rw [iInf, iInf, WithTop.coe_sInf' (range_nonempty f) hf, ← range_comp, Function.comp_def]
4444
45- @[norm_cast]
45+ set_option pp.explicit true in
46+ @ [to_dual (attr := norm_cast)]
4647theorem WithTop.coe_iSup [SupSet α] (f : ι → α) (h : BddAbove (Set.range f)) :
4748 ↑(⨆ i, f i) = (⨆ i, f i : WithTop α) := by
4849 rw [iSup, iSup, WithTop.coe_sSup' h, ← range_comp, Function.comp_def]
4950
50- @[simp]
51- theorem WithBot.ciSup_empty [IsEmpty ι] [SupSet α] (f : ι → WithBot α) :
52- ⨆ i, f i = ⊥ :=
53- WithTop.iInf_empty (α := αᵒᵈ) _
54-
55- @[norm_cast]
56- theorem WithBot.coe_iSup [Nonempty ι] [SupSet α] {f : ι → α} (hf : BddAbove (range f)) :
57- ↑(⨆ i, f i) = (⨆ i, f i : WithBot α) :=
58- WithTop.coe_iInf (α := αᵒᵈ) hf
51+ @ [deprecated (since := "2026-05-04" )] alias WithBot.ciSup_empty := WithBot.iSup_empty
5952
6053theorem WithBot.coe_biSup {ι : Type *} {s : Set ι} (hs : s.Nonempty)
6154 {α : Type *} [CompleteLattice α] (f : ι → α) :
@@ -69,10 +62,11 @@ theorem WithBot.coe_biSup {ι : Type*} {s : Set ι} (hs : s.Nonempty)
6962 · simpa only [iSup_pos h] using by apply le_biSup _ h
7063 · simpa only [iSup_neg h] using le_trans (by simp) (le_biSup _ hj)
7164
72- @[norm_cast]
73- theorem WithBot.coe_iInf [InfSet α] (f : ι → α) (h : BddBelow (Set.range f)) :
74- ↑(⨅ i, f i) = (⨅ i, f i : WithBot α) :=
75- WithTop.coe_iSup (α := αᵒᵈ) _ h
65+ @ [to_dual existing]
66+ theorem WithTop.coe_biInf {ι : Type *} {s : Set ι} (hs : s.Nonempty)
67+ {α : Type *} [CompleteLattice α] (f : ι → α) :
68+ ⨅ i ∈ s, f i = ⨅ i ∈ s, (f i : WithTop α) :=
69+ WithBot.coe_biSup (α := αᵒᵈ) hs f
7670
7771theorem WithBot.coe_biInf {ι : Type *} {s : Set ι} {α : Type *} [CompleteLattice α] (f : ι → α) :
7872 ⨅ i ∈ s, f i = ⨅ i ∈ s, (f i : WithBot α) := by
@@ -82,75 +76,64 @@ theorem WithBot.coe_biInf {ι : Type*} {s : Set ι} {α : Type*} [CompleteLattic
8276 · simpa only [iInf_pos h] using by apply biInf_le _ h
8377 · simp [iInf_neg h]
8478
79+ @ [to_dual existing]
80+ theorem WithTop.coe_biSup {ι : Type *} {s : Set ι} {α : Type *} [CompleteLattice α] (f : ι → α) :
81+ ⨆ i ∈ s, f i = ⨆ i ∈ s, (f i : WithTop α) :=
82+ WithBot.coe_biInf (α := αᵒᵈ) f
83+
8584end
8685
8786section ConditionallyCompleteLattice
8887
8988variable [ConditionallyCompleteLattice α] {a b : α}
9089
90+ @[to_dual]
9191theorem isLUB_ciSup [Nonempty ι] {f : ι → α} (H : BddAbove (range f)) :
9292 IsLUB (range f) (⨆ i, f i) :=
9393 isLUB_csSup (range_nonempty f) H
9494
95+ @[to_dual]
9596theorem isLUB_ciSup_set {f : β → α} {s : Set β} (H : BddAbove (f '' s)) (Hne : s.Nonempty) :
9697 IsLUB (f '' s) (⨆ i : s, f i) := by
9798 rw [← sSup_image']
9899 exact isLUB_csSup (Hne.image _) H
99100
100- theorem isGLB_ciInf [Nonempty ι] {f : ι → α} (H : BddBelow (range f)) :
101- IsGLB (range f) (⨅ i, f i) :=
102- isGLB_csInf (range_nonempty f) H
103-
104- theorem isGLB_ciInf_set {f : β → α} {s : Set β} (H : BddBelow (f '' s)) (Hne : s.Nonempty) :
105- IsGLB (f '' s) (⨅ i : s, f i) :=
106- isLUB_ciSup_set (α := αᵒᵈ) H Hne
107-
101+ @ [to_dual le_ciInf_iff]
108102theorem ciSup_le_iff [Nonempty ι] {f : ι → α} {a : α} (hf : BddAbove (range f)) :
109103 iSup f ≤ a ↔ ∀ i, f i ≤ a :=
110104 (isLUB_le_iff <| isLUB_ciSup hf).trans forall_mem_range
111105
112- theorem le_ciInf_iff [Nonempty ι] {f : ι → α} {a : α} (hf : BddBelow (range f)) :
113- a ≤ iInf f ↔ ∀ i, a ≤ f i :=
114- (le_isGLB_iff <| isGLB_ciInf hf).trans forall_mem_range
115-
106+ @ [to_dual le_ciInf_set_iff]
116107theorem ciSup_set_le_iff {ι : Type *} {s : Set ι} {f : ι → α} {a : α} (hs : s.Nonempty)
117108 (hf : BddAbove (f '' s)) : ⨆ i : s, f i ≤ a ↔ ∀ i ∈ s, f i ≤ a :=
118109 (isLUB_le_iff <| isLUB_ciSup_set hf hs).trans forall_mem_image
119110
120- theorem le_ciInf_set_iff {ι : Type *} {s : Set ι} {f : ι → α} {a : α} (hs : s.Nonempty)
121- (hf : BddBelow (f '' s)) : (a ≤ ⨅ i : s, f i) ↔ ∀ i ∈ s, a ≤ f i :=
122- (le_isGLB_iff <| isGLB_ciInf_set hf hs).trans forall_mem_image
123-
111+ @[to_dual]
124112theorem IsLUB.ciSup_eq [Nonempty ι] {f : ι → α} (H : IsLUB (range f) a) : ⨆ i, f i = a :=
125113 H.csSup_eq (range_nonempty f)
126114
115+ @[to_dual]
127116theorem IsLUB.ciSup_set_eq {s : Set β} {f : β → α} (H : IsLUB (f '' s) a) (Hne : s.Nonempty) :
128117 ⨆ i : s, f i = a :=
129118 IsLUB.csSup_eq (image_eq_range f s ▸ H) (image_eq_range f s ▸ Hne.image f)
130119
131- theorem IsGLB.ciInf_eq [Nonempty ι] {f : ι → α} (H : IsGLB (range f) a) : ⨅ i, f i = a :=
132- H.csInf_eq (range_nonempty f)
133-
134- theorem IsGLB.ciInf_set_eq {s : Set β} {f : β → α} (H : IsGLB (f '' s) a) (Hne : s.Nonempty) :
135- ⨅ i : s, f i = a :=
136- IsGLB.csInf_eq (image_eq_range f s ▸ H) (image_eq_range f s ▸ Hne.image f)
137-
138120/-- The indexed supremum of a function is bounded above by a uniform bound -/
121+ @ [to_dual le_ciInf /-- The indexed infimum of a function is bounded below by a uniform bound -/ ]
139122theorem ciSup_le [Nonempty ι] {f : ι → α} {c : α} (H : ∀ x, f x ≤ c) : iSup f ≤ c :=
140123 csSup_le (range_nonempty f) (by rwa [forall_mem_range])
141124
125+ @ [to_dual le_ciInf₂]
142126theorem ciSup₂_le [Nonempty ι] [∀ i, Nonempty (κ i)] {f : ∀ i, κ i → α}
143127 (h : ∀ i j, f i j ≤ a) : ⨆ (i) (j), f i j ≤ a :=
144128 ciSup_le fun i ↦ ciSup_le <| h i
145129
146- theorem le_ciInf₂ [Nonempty ι] [∀ i, Nonempty (κ i)] {f : ∀ i, κ i → α} (h : ∀ i j, a ≤ f i j) :
147- a ≤ ⨅ (i) (j), f i j :=
148- ciSup₂_le (α := αᵒᵈ) h
149-
150130/-- The indexed supremum of a function is bounded below by the value taken at one point -/
131+ @ [to_dual ciInf_le /-- The indexed infimum of a function is bounded above by the value taken at one
132+ point -/ ]
151133theorem le_ciSup {f : ι → α} (H : BddAbove (range f)) (c : ι) : f c ≤ iSup f :=
152134 le_csSup H (mem_range_self _)
153135
136+ @ [to_dual ciInf_le_of_le]
154137theorem le_ciSup_of_le {f : ι → α} (H : BddAbove (range f)) (c : ι) (h : a ≤ f c) : a ≤ iSup f :=
155138 le_trans h (le_ciSup H c)
156139
0 commit comments