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