Zulip Chat Archive
Stream: Is there code for X?
Topic: Monotone function maps iSup to iSup
Michael Stoll (Feb 26 2026 at 15:42):
Do we have something like the following?
example {α β ι : Type*} [ConditionallyCompleteLinearOrder α] [ConditionallyCompleteLinearOrder β]
[Finite ι] [Nonempty ι] (f : ι → α) (g : α → β) (hg : Monotone g) :
g (⨆ i, f i) = ⨆ i, g (f i) := by
sorry
Snir Broshi (Feb 26 2026 at 15:52):
Snir Broshi (Feb 26 2026 at 15:55):
(#Is there code for X? > `sSup (f '' s) = f (sSup s) `)
Snir Broshi (Feb 26 2026 at 15:55):
If so then β doesn't have to have a linear order, it can be ConditionallyCompleteLattice
Michael Stoll (Feb 26 2026 at 15:59):
It's close, modulo converting to an docs#sSup . Maybe you can add ciSup versions (perhaps in the Finite namespace, similar to what I'm doing in #35260), too?
Michael Stoll (Feb 26 2026 at 16:02):
Relative to my PR, this would add
namespace Finite
variable {α β ι : Type*} [ConditionallyCompleteLinearOrder α] [ConditionallyCompleteLinearOrder β]
[Finite ι] [Nonempty ι]
lemma map_iSup_of_monotone (f : ι → α) {g : α → β} (hg : Monotone g) :
g (⨆ i, f i) = ⨆ i, g (f i) := by
refine le_antisymm ?_ ?_
· obtain ⟨j, hj⟩ : ∃ j, f j = ⨆ i, f i := exists_eq_ciSup_of_finite
rw [← hj]
exact Finite.le_ciSup_of_le j le_rfl
· exact ciSup_le fun i ↦ hg <| Finite.le_ciSup f i
lemma map_iInf_of_monotone (f : ι → α) {g : α → β} (hg : Monotone g) :
g (⨅ i, f i) = ⨅ i, g (f i) :=
map_iSup_of_monotone (α := αᵒᵈ) (β := βᵒᵈ) f fun _ _ h ↦ hg h
lemma map_iSup_of_antitone (f : ι → α) {g : α → β} (hg : Antitone g) :
g (⨆ i, f i) = ⨅ i, g (f i) :=
map_iSup_of_monotone (β := βᵒᵈ) f hg
lemma map_iInf_of_antitone (f : ι → α) {g : α → β} (hg : Antitone g) :
g (⨅ i, f i) = ⨆ i, g (f i) :=
map_iInf_of_monotone (β := βᵒᵈ) f hg
end Finite
Michael Stoll (Feb 26 2026 at 16:24):
OK; I think it is perhaps better to add these to my own PR (plus docs#MonotoneOn / docs#AntitoneOn versions).
Snir Broshi (Feb 26 2026 at 16:34):
Sure, can you also take the Monotone stuff from my PR?
(everything in ConditionallyCompleteLattice/Finset.lean, and ConditionallyCompleteLattice/Basic.lean below line 700)
Snir Broshi (Feb 26 2026 at 16:34):
Unless they're independent
Michael Stoll (Feb 26 2026 at 16:35):
I'll check, but it may take some time.
Snir Broshi (Feb 26 2026 at 16:56):
Hmm, perhaps I'll just split off that chunk to a separate PR?
Snir Broshi (Feb 26 2026 at 17:06):
Last updated: Feb 28 2026 at 14:05 UTC