Zulip Chat Archive

Stream: Is there code for X?

Topic: Image of a monoid hom is a monoid


Philipp Weisang (Feb 10 2026 at 13:36):

I found such a result for additive monoids but I need it for mulitplicative monoids.

Floris van Doorn (Feb 10 2026 at 13:44):

docs#Function.Surjective.monoid ?

Floris van Doorn (Feb 10 2026 at 13:46):

or perhaps you mean docs#MonoidHom.mrange ?
Hint: try to state what you want in Lean. That is a good exercise, and clarifies what you want exactly (and sometimes by exact? will even find it)

Floris van Doorn (Feb 10 2026 at 13:47):

(there is also docs#Submonoid.map )

Philipp Weisang (Feb 10 2026 at 13:51):

Thanks for the response.
I see how both of these can be used for what i need but it seems to me there should simply be a proof of something like

variable {M N : Type*} [Monoid M] [Monoid N]
variable (L : Set M) (ϕ : M →* N)
instance im_is_mon :
     Monoid (ϕ.mrange) :=

Junyan Xu (Feb 10 2026 at 13:52):

inferInstance should already work? (because of SubmonoidClass.toMonoid)

Philipp Weisang (Feb 10 2026 at 13:59):

Pretty much. This worked for me:

instance im_is_mon :
     Monoid (MonoidHom.mrange ϕ) := by infer_instance

Thank you.


Last updated: Feb 28 2026 at 14:05 UTC