@@ -166,6 +166,88 @@ theorem Dense.isGLB_inter_iff {α : Type*} [TopologicalSpace α] [Preorder α] [
166166 IsGLB (t ∩ s) x ↔ IsGLB t x :=
167167 hs.isLUB_inter_iff (α := αᵒᵈ) ht
168168
169+ theorem Dense.continuous_upperBounds {α : Type *} [TopologicalSpace α] [Preorder α]
170+ [ClosedIicTopology α] {f : γ → α} [TopologicalSpace γ] {S : Set γ} (hS : Dense S)
171+ (hf : Continuous f) :
172+ upperBounds (f '' S) = upperBounds (range f) := by
173+ refine subset_antisymm ?_ fun _ => upperBounds_mono (Set.image_subset_range f S) le_rfl
174+ refine subset_trans ?_ fun _ => upperBounds_mono (hf.range_subset_closure_image_dense hS) le_rfl
175+ intro x hx i hi
176+ rw [mem_closure_iff_frequently] at hi
177+ exact (hi.mono hx).mem_of_closed isClosed_Iic
178+
179+ theorem Dense.continuous_lowerBounds {α : Type *} [TopologicalSpace α] [Preorder α]
180+ [ClosedIciTopology α] {f : γ → α} [TopologicalSpace γ] {S : Set γ} (hS : Dense S)
181+ (hf : Continuous f) :
182+ lowerBounds (f '' S) = lowerBounds (range f) := by
183+ refine subset_antisymm ?_ fun _ => lowerBounds_mono (Set.image_subset_range f S) le_rfl
184+ refine subset_trans ?_ fun _ => lowerBounds_mono (hf.range_subset_closure_image_dense hS) le_rfl
185+ intro x hx i hi
186+ rw [mem_closure_iff_frequently] at hi
187+ exact (hi.mono hx).mem_of_closed isClosed_Ici
188+
189+ theorem Dense.continuous_sup {α : Type *} [TopologicalSpace α]
190+ [ConditionallyCompleteLattice α] [ClosedIicTopology α] {f : γ → α} [TopologicalSpace γ]
191+ {S : Set γ} (hS : Dense S) (hf : Continuous f) (h : BddAbove (range f)) :
192+ ⨆ i, f i = ⨆ s : S, f s := by
193+ rw [← sSup_range, ← sSup_range]
194+ obtain (_ | _) := isEmpty_or_nonempty γ
195+ · simp [Set.range_eq_empty]
196+ refine (isLUB_csSup (range_nonempty f) h).unique ?_
197+ refine (isLUB_congr (hS.continuous_upperBounds hf)).mp (isLUB_ciSup_set ?_ hS.nonempty)
198+ exact h.mono (by grind)
199+
200+ theorem Dense.continuous_inf {α : Type *} [TopologicalSpace α]
201+ [ConditionallyCompleteLattice α] [ClosedIciTopology α] {f : γ → α} [TopologicalSpace γ]
202+ {S : Set γ} (hS : Dense S) (hf : Continuous f) (h : BddBelow (range f)) :
203+ ⨅ i, f i = ⨅ s : S, f s := by
204+ rw [← sInf_range, ← sInf_range]
205+ obtain (_ | _) := isEmpty_or_nonempty γ
206+ · simp [Set.range_eq_empty]
207+ refine (isGLB_csInf (range_nonempty f) h).unique ?_
208+ refine (isGLB_congr (hS.continuous_lowerBounds hf)).mp (isGLB_ciInf_set ?_ hS.nonempty)
209+ exact h.mono (by grind)
210+
211+ theorem Dense.continuous_sup' {α : Type *} [TopologicalSpace α]
212+ [ConditionallyCompleteLinearOrder α] [ClosedIicTopology α] {f : γ → α} [TopologicalSpace γ]
213+ {S : Set γ} (hS : Dense S) (hf : Continuous f) :
214+ ⨆ i, f i = ⨆ s : S, f s := by
215+ rw [← sSup_range, ← sSup_range]
216+ obtain (_ | _) := isEmpty_or_nonempty γ
217+ · simp [Set.range_eq_empty]
218+ by_cases h1 : BddAbove (range f)
219+ · refine (isLUB_csSup (range_nonempty f) h1).unique ?_
220+ refine (isLUB_congr (hS.continuous_upperBounds hf)).mp (isLUB_ciSup_set ?_ hS.nonempty)
221+ exact h1.mono (by grind)
222+ · have h2 : ¬ BddAbove (range (fun s : S => f (Subtype.val s))) := by
223+ intro h
224+ have := range_comp' f (Subtype.val : S → γ)
225+ simp_all only [Subtype.range_coe_subtype, setOf_mem_eq]
226+ have := h.closure.mono (image_closure_subset_closure_image hf)
227+ simp only [hS.closure_eq, image_univ] at this
228+ exact h1 this
229+ simp [csSup_of_not_bddAbove h1, csSup_of_not_bddAbove h2]
230+
231+ theorem Dense.continuous_inf' {α : Type *} [TopologicalSpace α]
232+ [ConditionallyCompleteLinearOrder α] [ClosedIciTopology α] {f : γ → α} [TopologicalSpace γ]
233+ {S : Set γ} (hS : Dense S) (hf : Continuous f) :
234+ ⨅ i, f i = ⨅ s : S, f s := by
235+ rw [← sInf_range, ← sInf_range]
236+ obtain (_ | _) := isEmpty_or_nonempty γ
237+ · simp [Set.range_eq_empty]
238+ by_cases h1 : BddBelow (range f)
239+ · refine (isGLB_csInf (range_nonempty f) h1).unique ?_
240+ refine (isGLB_congr (hS.continuous_lowerBounds hf)).mp (isGLB_ciInf_set ?_ hS.nonempty)
241+ exact h1.mono (by grind)
242+ · have h2 : ¬ BddBelow (range (fun s : S => f (Subtype.val s))) := by
243+ intro h
244+ have := range_comp' f (Subtype.val : S → γ)
245+ simp_all only [Subtype.range_coe_subtype, setOf_mem_eq]
246+ have := h.closure.mono (image_closure_subset_closure_image hf)
247+ simp only [hS.closure_eq, image_univ] at this
248+ exact h1 this
249+ simp [csInf_of_not_bddBelow h1, csInf_of_not_bddBelow h2]
250+
169251/-!
170252### Existence of sequences tending to `sInf` or `sSup` of a given set
171253-/
0 commit comments