diff --git a/Mathbin/GroupTheory/MonoidLocalization.lean b/Mathbin/GroupTheory/MonoidLocalization.lean index 67c88e9834..08d025dae6 100644 --- a/Mathbin/GroupTheory/MonoidLocalization.lean +++ b/Mathbin/GroupTheory/MonoidLocalization.lean @@ -2300,7 +2300,7 @@ theorem ofMulEquivOfDom_comp {k : M ≃* P} (H : T.map k.symm.toMonoidHom = S) ( lean 3 declaration is forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2), Eq.{max (succ u1) (succ u2)} (Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) (Submonoid.LocalizationMap.ofMulEquivOfDom.{u1, u2, u1} M _inst_1 S N _inst_2 M _inst_1 f S (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) ((fun (this : Eq.{succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Submonoid.map.{u1, u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) S) S) => this) (Submonoid.ext.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Submonoid.map.{u1, u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) S) S (fun (x : M) => Iff.intro (Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x (Submonoid.map.{u1, u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) S)) (Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) (fun (_x : Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x (Submonoid.map.{u1, u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) S)) => (fun (_a : Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x (Submonoid.map.{u1, u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) S)) => Exists.dcases_on.{succ u1} M (fun (x_1 : M) => And (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) x_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) x_1) x)) (fun (_a : Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x (Submonoid.map.{u1, u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) S)) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) _a (fun (w : M) (h : And (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) w ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) w) x)) => And.dcasesOn.{0} (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) w ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) w) x) (fun (h : And (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) w ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) w) x)) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) h (fun (h_left : Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) w ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (h_right : Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) w) x) => id.{0} ((fun (_x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _x S) x) (Eq.subst.{succ u1} M (fun (_x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) _x S) (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) w) x h_right h_left)))) _x) (fun (h : Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) => Exists.intro.{succ u1} M (fun (x_1 : M) => And (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) x_1 ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) x_1) x)) x (And.intro (Membership.Mem.{u1, u1} M (Set.{u1} M) (Set.hasMem.{u1} M) x ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S)) (Eq.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) x) x) h (rfl.{succ u1} M (coeFn.{succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (fun (_x : MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) => M -> M) (FunLike.hasCoeToFun.{succ u1, succ u1, succ u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (fun (_x : M) => M) (MulHomClass.toFunLike.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MonoidHomClass.toMulHomClass.{u1, u1, u1} (MonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MonoidHom.monoidHomClass.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) (MulEquiv.toMonoidHom.{u1, u1} M M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (MulEquiv.refl.{u1} M (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))))) x)))))))) f but is expected to have type - forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2), Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f S (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) ([mdata let_fun:1 (fun (this : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S) S) => this) (Submonoid.ext.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S) S (fun (x : M) => Iff.intro (Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S)) (Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) (fun (_x : Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S)) => Submonoid.LocalizationMap.ofMulEquivOfDom_id.match_1.{u2} M _inst_1 S x (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15756.15764 : Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S)) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) _x (fun (w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15777 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15777 (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) (h : Eq.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15777) x) => Eq.rec.{0, succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15777) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15781 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15782 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15777) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15777) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15781) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15781 S) hy x h)) (fun (h : Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) => Exists.intro.{succ u2} M (fun (x_1 : M) => And (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x_1 (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) (Eq.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) x_1) x)) x (And.intro (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) (Eq.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) x) x) h (rfl.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) x))))))])) f + forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2), Eq.{max (succ u2) (succ u1)} (Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) (Submonoid.LocalizationMap.ofMulEquivOfDom.{u2, u1, u2} M _inst_1 S N _inst_2 M _inst_1 f S (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) ([mdata let_fun:1 (fun (this : Eq.{succ u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S) S) => this) (Submonoid.ext.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S) S (fun (x : M) => Iff.intro (Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S)) (Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) (fun (_x : Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S)) => Submonoid.LocalizationMap.ofMulEquivOfDom_id.match_1.{u2} M _inst_1 S x (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15755.15763 : Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x (Submonoid.map.{u2, u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) S)) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) _x (fun (w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15776 : M) (hy : Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15776 (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) (h : Eq.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15776) x) => Eq.rec.{0, succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15776) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15780 : M) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15781 : Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15776) (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) a) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) w._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15776) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15780) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15780 S) hy x h)) (fun (h : Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) => Exists.intro.{succ u2} M (fun (x_1 : M) => And (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x_1 (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) (Eq.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) x_1) x)) x (And.intro (Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) (Eq.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) x) x) h (rfl.{succ u2} M (FunLike.coe.{succ u2, succ u2, succ u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => M) _x) (MulHomClass.toFunLike.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MonoidHomClass.toMulHomClass.{u2, u2, u2} (MonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MonoidHom.monoidHomClass.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) (MulEquiv.toMonoidHom.{u2, u2} M M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (MulEquiv.refl.{u2} M (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))))) x))))))])) f Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.of_mul_equiv_of_dom_id Submonoid.LocalizationMap.ofMulEquivOfDom_idₓ'. -/ /-- A special case of `f ∘ id = f`, `f` a localization map. -/ @[simp, to_additive "A special case of `f ∘ id = f`, `f` a localization map."] @@ -2334,7 +2334,7 @@ noncomputable def mulEquivOfMulEquiv (k : LocalizationMap T Q) {j : M ≃* P} lean 3 declaration is forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {j : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.map.{u1, u3, max u3 u1} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.monoidHomClass.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) S) T) (x : N), Eq.{succ u4} Q (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (MulEquiv.{u2, u4} N Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (fun (_x : MulEquiv.{u2, u4} N Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) => N -> Q) (MulEquiv.hasCoeToFun.{u2, u4} N Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H) x) (coeFn.{max (succ u4) (succ u2), max (succ u2) (succ u4)} (MonoidHom.{u2, u4} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (fun (_x : MonoidHom.{u2, u4} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) => N -> Q) (MonoidHom.hasCoeToFun.{u2, u4} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (Submonoid.LocalizationMap.map.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) T (fun (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) => (fun (this : Membership.Mem.{u3, u3} P (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.hasMem.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.setLike.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y)) T) => this) (Eq.subst.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Membership.Mem.{u3, u3} P (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.hasMem.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.setLike.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y)) _x) (Submonoid.map.{u1, u3, max u3 u1} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.monoidHomClass.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) S) T H (Set.mem_image_of_mem.{u1, u3} M P (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => M -> P) (MulEquiv.hasCoeToFun.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S) (Subtype.property.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)))) Q _inst_4 k) x) but is expected to have type - forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4} {j : MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))} (H : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) T) (x : N), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (EquivLike.toEmbeddingLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulEquivClass.toEquivLike.{max u1 u3, u1, u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))))) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) T (fun (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) T) => this) (Eq.rec.{0, succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15966 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15967 : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15966) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15966) (Set.mem_image_of_mem.{u4, u2} M P (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y) (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S) (Subtype.property.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) y)) T H)]) Q _inst_4 k) x) + forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4} {j : MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))} (H : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) T) (x : N), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (EquivLike.toEmbeddingLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulEquivClass.toEquivLike.{max u1 u3, u1, u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))))) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H) x) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N (fun (_x : N) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : N) => Q) _x) (MulHomClass.toFunLike.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MonoidHomClass.toMulHomClass.{max u1 u3, u1, u3} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (MonoidHom.monoidHomClass.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))) (Submonoid.LocalizationMap.map.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) T (fun (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) T) => this) (Eq.rec.{0, succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15965 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15966 : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15965) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.15965) (Set.mem_image_of_mem.{u4, u2} M P (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y) (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S) (Subtype.property.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) y)) T H)]) Q _inst_4 k) x) Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map_apply Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_applyₓ'. -/ @[simp, to_additive] theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P} @@ -2349,7 +2349,7 @@ theorem mulEquivOfMulEquiv_eq_map_apply {k : LocalizationMap T Q} {j : M ≃* P} lean 3 declaration is forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {j : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.map.{u1, u3, max u3 u1} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.monoidHomClass.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) S) T), Eq.{max (succ u4) (succ u2)} (MonoidHom.{u2, u4} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4))) (MulEquiv.toMonoidHom.{u2, u4} N Q (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2)) (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H)) (Submonoid.LocalizationMap.map.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) T (fun (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) => (fun (this : Membership.Mem.{u3, u3} P (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.hasMem.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.setLike.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y)) T) => this) (Eq.subst.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Membership.Mem.{u3, u3} P (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.hasMem.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.setLike.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u3) (succ u1), max (succ u1) (succ u3)} (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => M -> P) (MonoidHom.hasCoeToFun.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y)) _x) (Submonoid.map.{u1, u3, max u3 u1} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.monoidHomClass.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) S) T H (Set.mem_image_of_mem.{u1, u3} M P (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => M -> P) (MulEquiv.hasCoeToFun.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S) (Subtype.property.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y)))) Q _inst_4 k) but is expected to have type - forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4} {j : MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))} (H : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) T), Eq.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MulEquiv.toMonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H)) (Submonoid.LocalizationMap.map.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) T (fun (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) T) => this) (Eq.rec.{0, succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16064 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16065 : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16064) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16064) (Set.mem_image_of_mem.{u4, u2} M P (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y) (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S) (Subtype.property.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) y)) T H)]) Q _inst_4 k) + forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4} {j : MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))} (H : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) T), Eq.{max (succ u1) (succ u3)} (MonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MulEquiv.toMonoidHom.{u1, u3} N Q (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2)) (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H)) (Submonoid.LocalizationMap.map.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) T (fun (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S)) => [mdata let_fun:1 (fun (this : Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) _x) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) T) => this) (Eq.rec.{0, succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16063 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16064 : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16063) => Membership.mem.{u4, u4} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M (fun (a : M) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : M) => P) a) (MulHomClass.toFunLike.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHomClass.toMulHomClass.{max u2 u4, u2, u4} (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16063) (Set.mem_image_of_mem.{u4, u2} M P (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y) (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S) (Subtype.property.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) y)) T H)]) Q _inst_4 k) Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_eq_map Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_mapₓ'. -/ @[to_additive] theorem mulEquivOfMulEquiv_eq_map {k : LocalizationMap T Q} {j : M ≃* P} @@ -2377,7 +2377,7 @@ theorem mulEquivOfMulEquiv_eq {k : LocalizationMap T Q} {j : M ≃* P} (H : S.ma lean 3 declaration is forall {M : Type.{u1}} [_inst_1 : CommMonoid.{u1} M] {S : Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))} {N : Type.{u2}} [_inst_2 : CommMonoid.{u2} N] {P : Type.{u3}} [_inst_3 : CommMonoid.{u3} P] (f : Submonoid.LocalizationMap.{u1, u2} M _inst_1 S N _inst_2) {T : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))} {Q : Type.{u4}} [_inst_4 : CommMonoid.{u4} Q] {k : Submonoid.LocalizationMap.{u3, u4} P _inst_3 T Q _inst_4} {j : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))} (H : Eq.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (Submonoid.map.{u1, u3, max u3 u1} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.monoidHomClass.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) S) T) (x : M) (y : coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S), Eq.{succ u4} Q (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (MulEquiv.{u2, u4} N Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (fun (_x : MulEquiv.{u2, u4} N Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) => N -> Q) (MulEquiv.hasCoeToFun.{u2, u4} N Q (MulOneClass.toHasMul.{u2} N (Monoid.toMulOneClass.{u2} N (CommMonoid.toMonoid.{u2} N _inst_2))) (MulOneClass.toHasMul.{u4} Q (Monoid.toMulOneClass.{u4} Q (CommMonoid.toMonoid.{u4} Q _inst_4)))) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u1, u2, u3, u4} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H) (Submonoid.LocalizationMap.mk'.{u1, u2} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u3, u4} P _inst_3 T Q _inst_4 k (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => M -> P) (MulEquiv.hasCoeToFun.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) j x) (Subtype.mk.{succ u3} P (fun (x : P) => Membership.Mem.{u3, u3} P (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.hasMem.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.setLike.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) x T) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => M -> P) (MulEquiv.hasCoeToFun.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) j ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y)) (Eq.subst.{succ u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (fun (_x : Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) => Membership.Mem.{u3, u3} P (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (SetLike.hasMem.{u3, u3} (Submonoid.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) P (Submonoid.setLike.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => M -> P) (MulEquiv.hasCoeToFun.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) j ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y)) _x) (Submonoid.map.{u1, u3, max u3 u1} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) (MonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MonoidHom.monoidHomClass.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3))) (MulEquiv.toMonoidHom.{u1, u3} M P (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)) (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)) j) S) T H (Set.mem_image_of_mem.{u1, u3} M P (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) (fun (_x : MulEquiv.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) => M -> P) (MulEquiv.hasCoeToFun.{u1, u3} M P (MulOneClass.toHasMul.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (MulOneClass.toHasMul.{u3} P (Monoid.toMulOneClass.{u3} P (CommMonoid.toMonoid.{u3} P _inst_3)))) j) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (HasLiftT.mk.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (CoeTCₓ.coe.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeBase.{succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) Type.{u1} (SetLike.hasCoeToSort.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) S) M (coeSubtype.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S))))) y) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (HasLiftT.mk.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (CoeTCₓ.coe.{succ u1, succ u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (Set.{u1} M) (SetLike.Set.hasCoeT.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))))) S) (Subtype.property.{succ u1} M (fun (x : M) => Membership.Mem.{u1, u1} M (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) (SetLike.hasMem.{u1, u1} (Submonoid.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1))) M (Submonoid.setLike.{u1} M (Monoid.toMulOneClass.{u1} M (CommMonoid.toMonoid.{u1} M _inst_1)))) x S) y))))) but is expected to have type - forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4} {j : MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))} (H : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) T) (x : M) (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (EquivLike.toEmbeddingLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulEquivClass.toEquivLike.{max u1 u3, u1, u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))))) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u4, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j x) (Subtype.mk.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) x T) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Eq.rec.{0, succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16248 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16249 : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16248) => Membership.mem.{u4, u4} P (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16248) (Set.mem_image_of_mem.{u4, u2} M P (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y) (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S) (Subtype.property.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) y)) T H))) + forall {M : Type.{u2}} [_inst_1 : CommMonoid.{u2} M] {S : Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))} {N : Type.{u1}} [_inst_2 : CommMonoid.{u1} N] {P : Type.{u4}} [_inst_3 : CommMonoid.{u4} P] (f : Submonoid.LocalizationMap.{u2, u1} M _inst_1 S N _inst_2) {T : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))} {Q : Type.{u3}} [_inst_4 : CommMonoid.{u3} Q] {k : Submonoid.LocalizationMap.{u4, u3} P _inst_3 T Q _inst_4} {j : MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))} (H : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) T) (x : M) (y : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S)), Eq.{succ u3} ((fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N (fun (_x : N) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : N) => Q) _x) (EmbeddingLike.toFunLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (EquivLike.toEmbeddingLike.{max (succ u1) (succ u3), succ u1, succ u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulEquivClass.toEquivLike.{max u1 u3, u1, u3} (MulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4)))) N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))) (MulEquiv.instMulEquivClassMulEquiv.{u1, u3} N Q (MulOneClass.toMul.{u1} N (Monoid.toMulOneClass.{u1} N (CommMonoid.toMonoid.{u1} N _inst_2))) (MulOneClass.toMul.{u3} Q (Monoid.toMulOneClass.{u3} Q (CommMonoid.toMonoid.{u3} Q _inst_4))))))) (Submonoid.LocalizationMap.mulEquivOfMulEquiv.{u2, u1, u4, u3} M _inst_1 S N _inst_2 P _inst_3 f T Q _inst_4 k j H) (Submonoid.LocalizationMap.mk'.{u2, u1} M _inst_1 S N _inst_2 f x y)) (Submonoid.LocalizationMap.mk'.{u4, u3} P _inst_3 T Q _inst_4 k (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j x) (Subtype.mk.{succ u4} P (fun (x : P) => Membership.mem.{u4, u4} P (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) x T) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (_x : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) _x) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) (Eq.rec.{0, succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) (fun (x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16247 : Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (h._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16248 : Eq.{succ u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (Submonoid.map.{u2, u4, max u2 u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) (MonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MonoidHom.monoidHomClass.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.toMonoidHom.{u2, u4} M P (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)) (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)) j) S) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16247) => Membership.mem.{u4, u4} P (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (SetLike.instMembership.{u4, u4} (Submonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) P (Submonoid.instSetLikeSubmonoid.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y)) x._@.Mathlib.GroupTheory.MonoidLocalization._hyg.16247) (Set.mem_image_of_mem.{u4, u2} M P (FunLike.coe.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M (fun (a : M) => (fun (x._@.Mathlib.Data.FunLike.Embedding._hyg.19 : M) => P) a) (EmbeddingLike.toFunLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (EquivLike.toEmbeddingLike.{max (succ u2) (succ u4), succ u2, succ u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulEquivClass.toEquivLike.{max u2 u4, u2, u4} (MulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3)))) M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))) (MulEquiv.instMulEquivClassMulEquiv.{u2, u4} M P (MulOneClass.toMul.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (MulOneClass.toMul.{u4} P (Monoid.toMulOneClass.{u4} P (CommMonoid.toMonoid.{u4} P _inst_3))))))) j) (Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Set.{u2} M) (Set.instMembershipSet.{u2} M) x (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S)) y) (SetLike.coe.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) S) (Subtype.property.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) (SetLike.instMembership.{u2, u2} (Submonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1))) M (Submonoid.instSetLikeSubmonoid.{u2} M (Monoid.toMulOneClass.{u2} M (CommMonoid.toMonoid.{u2} M _inst_1)))) x S) y)) T H))) Case conversion may be inaccurate. Consider using '#align submonoid.localization_map.mul_equiv_of_mul_equiv_mk' Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk'ₓ'. -/ @[simp, to_additive] theorem mulEquivOfMulEquiv_mk' {k : LocalizationMap T Q} {j : M ≃* P} (H : S.map j.toMonoidHom = T) diff --git a/lake-manifest.json b/lake-manifest.json index cd3d58f4e0..d665336f56 100644 --- a/lake-manifest.json +++ b/lake-manifest.json @@ -4,15 +4,15 @@ [{"git": {"url": "https://github.com/leanprover-community/lean3port.git", "subDir?": null, - "rev": "8c73f6a342561b43428b62fdf7a53ad6bb2b73dc", + "rev": "2c90b2e7957e50c47ea49070f1c328590c46858d", "name": "lean3port", - "inputRev?": "8c73f6a342561b43428b62fdf7a53ad6bb2b73dc"}}, + "inputRev?": "2c90b2e7957e50c47ea49070f1c328590c46858d"}}, {"git": {"url": "https://github.com/leanprover-community/mathlib4.git", "subDir?": null, - "rev": "04155008c1bd958624d2184e1bd1f5a1cbdff452", + "rev": "aba6f4af8ff03384be41a246c83493f28008f77d", "name": "mathlib", - "inputRev?": "04155008c1bd958624d2184e1bd1f5a1cbdff452"}}, + "inputRev?": "aba6f4af8ff03384be41a246c83493f28008f77d"}}, {"git": {"url": "https://github.com/gebner/quote4", "subDir?": null, diff --git a/lakefile.lean b/lakefile.lean index 7a393b8c58..9ed49ac4ac 100644 --- a/lakefile.lean +++ b/lakefile.lean @@ -4,7 +4,7 @@ open Lake DSL System -- Usually the `tag` will be of the form `nightly-2021-11-22`. -- If you would like to use an artifact from a PR build, -- it will be of the form `pr-branchname-sha`. -def tag : String := "nightly-2023-04-21-20" +def tag : String := "nightly-2023-04-21-22" def releaseRepo : String := "leanprover-community/mathport" def oleanTarName : String := "mathlib3-binport.tar.gz" @@ -38,7 +38,7 @@ target fetchOleans (_pkg : Package) : Unit := do untarReleaseArtifact releaseRepo tag oleanTarName libDir return .nil -require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"8c73f6a342561b43428b62fdf7a53ad6bb2b73dc" +require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"2c90b2e7957e50c47ea49070f1c328590c46858d" @[default_target] lean_lib Mathbin where