Zulip Chat Archive

Stream: Is there code for X?

Topic: MaximalFor P (g ∘ f) i → MaximalFor P f i


Snir Broshi (Jan 31 2026 at 15:36):

What's the weakest property on g that implies this?
I'm fine with requiring more of the types, such as [PartialOrder α] [LinearOrder β].
Is there a better version for the special case f = id (aka MaximalFor P g i → Maximal P i)?

import Mathlib

theorem MaximalFor.of_relEmbedding_comp {ι α β : Type*} [Preorder α] [Preorder β] {P : ι  Prop}
    {f : ι  α} {i : ι} (g : α o β) (h : MaximalFor P (g  f) i) : MaximalFor P f i :=
  -- this only uses `f a ≤ f b ↔ a ≤ b` when `P a` and `P b` and doesn't use injectivity, which is weaker than `OrderEmbedding`
  h.prop, fun _ hj hle  g.le_iff_le.mp <| h.le_of_le hj <| g.monotone hle

theorem MaximalFor.of_strictMonoOn_comp {ι α β : Type*} [Preorder α] [Preorder β] {P : ι  Prop}
    {f : ι  α} {g : α  β} {i : ι} (hg : StrictMonoOn g (f '' setOf P))
    (h : MaximalFor P (g  f) i) : MaximalFor P f i := by
  refine h.prop, fun j hj hle  ?_⟩
  by_contra
  exact h.not_gt hj <| hg i, h.prop, rfl j, hj, rfl <| lt_of_le_not_ge hle this

Bhavik Mehta (Jan 31 2026 at 15:52):

(I haven't thought about your specific question but let me quickly say that results like this should be in mathlib, there's a lot of useful and basic api missing for MaximalFor!)

Snir Broshi (Jan 31 2026 at 18:14):

#34655


Last updated: Feb 28 2026 at 14:05 UTC