Zulip Chat Archive

Stream: new members

Topic: monoid_hom type class error

Carlos Silva (Dec 23 2021 at 03:08):

I have a monoid Y. I want to say that there is a monoid X such that a homomorphism f:X → Y exists and has some property. Here is how I tried to do that.

universes u v
variables {X : Type u} {Y : Type v}
def mon_recognizes [N : monoid Y] (Y : Type v) (L : set X) :=
 (M : monoid X) (f : X →* Y), L = f ⁻¹' (f '' L)

The problem appears at (f : X →* Y) and lean says it can't synthesize a type class instance for mul_one_class X. How do I fix this? I thought maybe I had to spell everything out.

 (M : monoid X) (f : X  Y),  @monoid_hom X Y
{one := M.one, mul := M.mul, one_mul := M.one_mul, mul_one := M.mul_one}
{one := N.one, mul := N.mul, one_mul := N.one_mul, mul_one := N.mul_one}

That didn't work. Maybe writing it all out will work and I'm just doing it wrong. Thanks for your help.

Kevin Buzzard (Dec 23 2021 at 06:41):

The X should be after the exists I guess, but your main problem can be solved by writing "by exactI" in an appropriate place. \exists M : monoid X, by exactI \exists f, ... or something like that should work (unchecked)

Last updated: Dec 20 2023 at 11:08 UTC